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

标签 c++ linux sockets

我正在 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/

相关文章:

c++ - std::set 使用不同数据结构的实现

c++ - 如何将 Clang 置于 C++ 模式?

c++ - 错误 : use of undeclared identifier 'T'

c++ - 带有自定义构造函数的自定义 STL 分配器

php - PHP 中的 ApacheBench 和 http 请求

linux - 如何创建 shell 脚本来删除 30 天前的文件?

python - 从 python 脚本设置 bash 变量

python - 在用户按下回车键之前获取 STDIN

c - 使用 -O 标志编译时套接字代码失败

c# - C#套接字帮助