当客户端与服务端通过Tcp Socket进行通信时,如果客户端应用正常退出或异常退出,服务端都会在对应的连接上获取感知(如返回0、或抛出异常)。但是,如果客户端的网线被拔掉,那么,默认情况下,服务端需要在2个小时后才会感知客户端掉线。对于很多服务端应用程序来说,这么长的反应时间是不能忍受的。
int
keepAlive
=
-
1744830460
;
//
SIO_KEEPALIVE_VALS
byte [] inValue = new byte [] { 1 , 0 , 0 , 0 , 0x20 , 0x4e , 0 , 0 , 0xd0 , 0x07 , 0 , 0 }; // True, 20 秒, 2 秒 sock.IOControl(keepAlive, inValue, null ); 20秒(20000毫秒)的16进制表示是4e20,2秒(2000毫秒)的16进制表示是07d0,如此,你可以修改inValue参数为自己希望的值。 |
Socket与拔掉网线
最新推荐文章于 2024-07-08 22:09:55 发布