我正在创建套接字服务器。但我不知道,我怎么能知道客户端是否断开连接?
我正在windows下创建服务器并使用berkeley sockets函数(read,send,connect….)。
最好我想要一个跨平台的解决方案(没有wsa函数)。
我可以写入套接字0字节并确认错误。但这不是个好办法。
最佳答案
当客户端断开连接时,您将得到一个“read”事件,但是read()将返回0。
ssize_t bytes_read;
if ((bytes_read = read(...)) == 0)
{
// client disconnected
}
else if (bytes_read == -1)
{
// some sort of error (also no data available when using non-blocking sockets).
}
else
{
// you have bytes_reads bytes to process
}