
This code reproduces the problem. I am not able to find why exception
is thrown. I have removed error checking to make the code to read
easier.
Thanks,
Lloyd
class Connection:public boost::enable_shared_from_this<Connection>
{
public:
Connection(boost::asio::io_service& ios):sock(ios)
{
}
void Connect()
{
sock.connect(boost::asio::ip::tcp::endpoint(boost::asio::ip::address_v4::from_string("172.16.29.12"),13));
boost::asio::write(sock,boost::asio::buffer("RUN 1\r\n",7));
try
{
boost::asio::streambuf b;
boost::asio::read(sock,b);
}
catch(exception& e)
{
cout<
Thanks Martin. The server sends back the data, I have checked it with wireshark. I am able to sniff and see the data.
This program is not using any complex protocol, it is simple "tcp" based text protocol. first of all am not able to read anything from the server.
One more thing I would like to add is the async_connect() is called from a thread, the io_service is also inside the thread. there are multiple treads like this. But I have tried removing the thread, that too does not mak any difference. I have also tried blocking connect(),write(), and read(), now also the read fails!
If this post is not clear, I am ready to post my code...
Thanks Lloyd
On Mon, Jun 6, 2011 at 2:21 PM, Martin Dyring-Andersen
wrote: Hi Lloyd,
I have an asio::ip::tcp::socket. Whenever I try to read from it, it throws an exception "end of file". But it is possible to write to the socket at any time! This is a client side application, it connects to the server using asio::async_connect(). The server is sending back the data, I checked it with wireshark. I tried using the both async_read() and read(), in both cases it fails with the same error. But both async_write(), and write() works perfectly. What could be the reason?
You don't provide a lot of information about the protocol, but the behavior you are seeing might be the server shutting down the servers' sending side of the connection, like
sock.shutdown(boost::asio::ip::tcp::socket::shutdown_send, error);
which still will leave the client able to write() data to the socket. The client should be able to read the data sent from the server before the shutdown() though.
Just an idea.
Best regards, Martin Dyring-Andersen _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users