Boost logo

Boost Users :

From: Sascha Seewald (vudu_at_[hidden])
Date: 2006-08-07 15:12:37


Hi Boosters,

I´m playing around with the great boost::asio library but have problems
using the boost::asio::ip::tcp::iostream.

I try to implement a very simple nntp-client:

<code>

void connect_and_retrieve_list_of_newsgroups()
{

  std::string line;

  // connect to server
  boost::asio::ip::tcp::iostream s("news.gmane.org", "nntp");
      if (!s)
    return;

  // read connection ack
  std::getline(s, line);

  // log
  std::cout << line;

  // check return code here. we assume everything is fine.
  // ...

  // send LIST command to request a list of newsgroups (see rfc 977)
  // the server will respond with one or more lines
  s << "LIST\r\n";

  // read response
  std::getline(s, line); // <-- waits here 'til server timeout

  ...
}

</code>

For some reason I don't get a response to the LIST command. After a few
minutes of waiting the server send a timeout notification. It is like I
had never sent the request.
The same code using sockets and asio::write() works ok.

So my questions are:
- In what way differ tcp::iostreams sending from asio::write() sending?
- Do tcp::iostreams append (or convert or drop) any characters of the
given string before sending?
- Is there a way to gain direct access to tcp::iostreams underlying
socket (at least for testing)?
- What am I doing wrong?

Any help would be much appreciated!

Cheers
Sascha


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net