how to detect TCP communication problems on time with synchronous operations
Hello, I'm using synchronous TCP communication via asio sockets. I have following problems: First problem; When I unplug ethernet cable, "eth0: Link is Down" is written in the console, but socket.write_some command does not detect link down failure. Second problem; During socket.connect command, if I plug ethernet cable, connect command does not detect this till "Connection timed out" error occurs. If I run socket.connect again, it detects the connection. How can I detect these plug/unplug events as soon as the event occurs? Best Regards, Gözde Koş ###################################################################### Dikkat: Bu elektronik posta mesaji kisisel ve ozeldir. Eger size gonderilmediyse lutfen gondericiyi bilgilendirip mesaji siliniz. Firmamiza gelen ve giden mesajlar virus taramasindan gecirilmekte, guvenlik nedeni ile kontrol edilerek saklanmaktadir. Mesajdaki gorusler ve bakis acisi gondericiye ait olup Aselsan A.S. resmi gorusu olmak zorunda degildir. ###################################################################### Attention: This e-mail message is privileged and confidential. If you are not the intended recipient please delete the message and notify the sender. E-mails to and from the company are monitored for operational reasons and in accordance with lawful business practices. Any views or opinions presented are solely those of the author and do not necessarily represent the views of the company. ######################################################################
For your first problem, is this behavior different from using recv
directly?
In my experience, disconnections can be tricky. A connection can be
silent for a long time yet still be connected. Without a graceful
shutdown, the connection can linger as a zombie. Although this also
makes it possible (theoretically) for the connection to be
reestablished, for the most part that is irrelevant.
The usual answers involve using timeouts or keepalives, either
application-level or socket-level.
This will at least enable your application to detect the abnormal
socket state in a more timely fashion. Note that if you enable
SO_KEEPALIVE, the default timeout will be no less than 2hrs, and
should be modified. I don't believe asio has a portable way to do
this, but there are socket options on posix systems and iocontrol
functions for windows. Docs should lead you in the right direction.
I imagine your second issue is the same; my only suggestion is a
shorter connection timeout.
While it seems logical that the disconnection of the network adapter
would lead to notification of the disconnected sockets, this has never
been the case for me (with Windows at least).
Others may have further insight into these issues as well.
Best of luck,
Adam D. Walling
On Aug 18, 2010, at 8:16 AM, Gözde Bahar KOŞ
Hello,
I'm using synchronous TCP communication via asio sockets. I have following problems:
First problem; When I unplug ethernet cable, "eth0: Link is Down" is written in the console, but socket.write_some command does not detect link down failure.
Second problem; During socket.connect command, if I plug ethernet cable, connect command does not detect this till "Connection timed out" error occurs. If I run socket.connect again, it detects the connection.
How can I detect these plug/unplug events as soon as the event occurs?
Best Regards, Gözde Koş ###################################################################### Dikkat:
Bu elektronik posta mesaji kisisel ve ozeldir. Eger size gonderilmediyse lutfen gondericiyi bilgilendirip mesaji siliniz. Firmamiza gelen ve giden mesajlar virus taramasindan gecirilmekte, guvenlik nedeni ile kontrol edilerek saklanmaktadir. Mesajdaki gorusler ve bakis acisi gondericiye ait olup Aselsan A.S. resmi gorusu olmak zorunda degildir.
###################################################################### Attention:
This e-mail message is privileged and confidential. If you are not the intended recipient please delete the message and notify the sender. E-mails to and from the company are monitored for operational reasons and in accordance with lawful business practices. Any views or opinions presented are solely those of the author and do not necessarily represent the views of the company.
###################################################################### _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (2)
-
Adam Walling
-
Gözde Bahar KOŞ