本人再编写的一个SOCKET服务器端的程序的时候,当客户端连接服务器断开的时候,服务器如何能知道哪一个套接字上的客户端关闭了啊?我试验了,如果是软件编写的客户端的话,那么软件关闭的时候,服务器能感知到一个FD_CLOSE消息,但是我现在用的是一个CDMA的硬件设备,当设备上电的时候,服务器能受到一个FD_ACCEPT,但是当设备断电以后,服务器不能感知到FD_CLOSE消息,请问,有没有什么API能够测试服务器端,当前的套接字哪个是有效的连接,哪个是无效的啊!谢谢啦!

解决方案 »

  1.   

    断电的话去找Windows下监测网卡寄存器状态的方法,因为以前看过单片机和PC网络通信相关,物理设备断开可以通过网卡得知
    如果不断电而是CDMA里面的程序异常死掉而不能主动关闭socket,好像就只能等待Windows超时关闭这个socket了,似乎是几个小时以上
    楼主也可以在再次开启CDMA程序时发送reset给服务器重置连接
      

  2.   

    设备断电是异常推出,需要使用心跳包来检测如果是正常使用shutdown和closesocket推出的话,会收到FD_CLOSE消息的