一般来说,只需要send或者recv一下,如果结果为零,则为掉线. 1.当recv返回值为0是表示对方已经正常(MSDN说是完美的)的断开连接.2.当recv返回SOCKET_ERROR时,说明对方已经断开连接,但是可能是非正常断开(断网或者客户端进程结束). 如果你担心在读的时候被阻塞,使用select(这个不太懂) 但是,在长连接下,有可能很长一段时间都没有数据往来.此时则需要心跳机制,TCP本身自带了心跳机制. 如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是3秒钟)内发送你设置…