如何确定是否已关闭与套接字的连接

M.K*_*.K. 2 c++ sockets linux

我在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);
Run Code Online (Sandbox Code Playgroud)

我的服务器上也有几个插座.我需要知道客户端关闭连接的哪个套接字.

bad*_*awi 11

如果客户端关闭连接,n = read(newsocketfd, buffer, 255)将返回0.