QTcpSocket detecting dead peers immediately
-
Hello,
How can I detect when one end of a socket is dead immediately? I have a client and a server and when I pull the chord on the client side it can take up to 1-2 minutes before the server notices that the client is dead and close the socket.. I would like the server to notice it within like a second...
-
When using TCP I think you can detect whether the receiving socket is still alive by checking the status of the write request. If
write
returns-1
, then check for the error, and you should be able to detect a host is down. Note that there's also an error signal. -
Hi,
you can use the TCP_KEEAPLIVE options.
-
@JohanSolo I have tried both of what you're sayin.. write doesn't return -1 on the server side... the socket is still in connected state and there's no error signal being sent... after I send a packet to a dead host it takes about 30 seconds and then it closes... but it's way too long I need it to be down to 1-2 seconds..
-
@mcosta I have tried setting it to 0 but it doesn't appear to have any effect on windows...
-
@mcosta said:
TCP_KEEAPLIVE
You have to enable KeepAlive (so set to 1) and also change the keep alive interval (I think you have to use native API for that)