我正在创建套接字服务器。但我不知道,我怎么知道客户端是否断开连接? 我在Windows下创建服务器并使用berkeley套接字功能(读取,发送,连接....)。 我最好想要一个跨平台解决方案(没有WSA功能)。
我可以写入socket 0字节和ckeck错误。但这不是好的解决方案。
答案 0 :(得分:4)
当客户端断开连接时,您将收到“读取”事件,但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
}