比如说,tcp客户端连接到socket上的tcp服务器。接下来,客户端调用shutdown(s);
然后服务器应该如何检测客户端是否已执行该操作?
PS:我知道服务器将收到FD_CLOSE。但是,我不知道如何在服务器端检查该标志。
答案 0 :(得分:4)
答案 1 :(得分:1)
xmllmx - 不要调用recv()来检查套接字是否已关闭,使用select()并询问套接字何时可读或可写。另请注意,除非您只是为类编写演示,否则您最有可能希望将套接字设置为非阻塞模式,因为调用带有太大缓冲区的recv()会导致它被阻塞,因此会导致send()使用缓冲区无法容纳OS的缓冲区等...
最后,在Winsock中使用select()非常糟糕;您可能希望使用其中一种形式的重叠I / O,例如完成例程或完成端口。