WinSocketC/C++网络通信如何判断客户机或者服务器连接断开?

Windows系统PC机和自动化设备之间的TCP通信,使用的是WinSocket,不使用心跳包之类的,在非UI线程中,
不能使用WSAAsyncSelect()函数绑定消息机制,如何判断对方连接断线,如网线断开,
或者对方程序退出?

recv函数返回如果是0,说明另一端已经断开,这个我是实际使用了的,所以比较有心得,老兄你不妨试一下,自己的程序连接一个调试工具,然后通讯后不断读取,这时端口工具,看看程序端的recv返回值是不是0。

lEvent 参数添加 FD_CLOSE ,断线消息到来时,判断错误码。0就是正常关闭

1、事实上我测试过,拔掉winsock网线,你的winsock不会有任何反应,甚至连状态都不会发生变化,非得要插上网线才会有反应,所以这种情况你要确保上位机正确,得定时查看网络状态
2、正常情况下,对方程序退出,winsock可以响应onclose,如果对方非正常退出,那你上位机用个心跳比较合适