如何判断客户端SOCKET已经断开连接
答案:2 悬赏:10 手机版
解决时间 2021-03-22 20:59
- 提问者网友:蓝琪梦莎
- 2021-03-22 13:24
如何判断客户端SOCKET已经断开连接
最佳答案
- 五星知识达人网友:一把行者刀
- 2021-03-22 15:00
你可以根据服务器收到的数据的长度来判断,如果服务器收到的数据长度是0,那么意味着你的客户端程序已经断开了连接。从TCP/IP协议栈的角度来说,就是客户端程序关闭了自己写的这一半连接,向服务器发出了一个FIN。这涉及到TCP的状态迁移,关于这方面的知识,建议你看一下Richard Stevens先生的《TCP/IP 详解》卷一和《Unix网络编程》卷一,上面有详细的解释。
关于你的第二个问题,建议你仔细看一下自己的服务器程序代码。服务器程序首先要建立一个监听socket,当有客户端连接上来时,服务器会在一个新socket上接受客户端连接。所以并不存在“乱”的问题。关于这个问题同样推荐你看上面的两本关于网络编程的经典著作。
关于你的第二个问题,建议你仔细看一下自己的服务器程序代码。服务器程序首先要建立一个监听socket,当有客户端连接上来时,服务器会在一个新socket上接受客户端连接。所以并不存在“乱”的问题。关于这个问题同样推荐你看上面的两本关于网络编程的经典著作。
全部回答
- 1楼网友:山君与见山
- 2021-03-22 15:57
1.当recv返回值为0是表示对方已经正常(msdn说是完美的)的断开连接.
2.当recv返回socket_error时,说明对方已经断开连接,但是可能是非正常断开(断网或者客户端进程结束).
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯