我正在 Linux 下用 C++ 编写套接字。我有个问题。我如何才能知道客户端是否关闭了连接。
特别是在服务端接受了客户端并开始等待来自客户端的一些数据的情况下。但是客户端不发送任何东西,只是关闭与服务器的连接。在这种情况下,我的服务器永远在等待一些数据。
这是我的程序示例:
newsockfd = accept(sockfd,
(struct sockaddr *) &cli_addr,
&clilen);
if (newsockfd < 0)
error("ERROR on accept");
bzero(buffer,256);
n = read(newsockfd,buffer,255);
我的服务器上还有几个套接字。我需要知道客户端关闭了哪个套接字的连接。
最佳答案
如果客户端关闭连接,n = read(newsocketfd, buffer, 255)
将返回 0。
关于c++ - 如何确定与套接字的连接是否已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714580/