【问题标题】:how to inform tcp client of server shutdown如何通知 tcp 客户端服务器关闭
【发布时间】:2012-03-30 20:05:57
【问题描述】:

在linux中使用非阻塞(20毫秒周期)TCP连接,我遇到了问题:

  • 当我从服务器端关闭套接字 [close(sd) 或 shutdown(sd,2);close(sd)] 时,客户端 poll() 不会收到任何 POLLHUP 事件。

  • 当服务器从 shell 中被杀死时,会收到 POLLHUP。

如何在一两个周期内通知客户?

【问题讨论】:

  • 如果您对答案感到满意,请将其标记为已接受。

标签: c linux sockets


【解决方案1】:

使用 POLLIN 表示 TCP 断开连接,并且在正常关闭的情况下 read() 将返回 0,或者 -1 和适当的错误(errno 不是 EINTR/EWOULDBLOCK)。

有些平台可能会使用 POLLHUP 发出信号,因此您可能也想处理这种情况。

【讨论】:

  • 您能否详细说明 SIGHUP 与 TCP 的关系以及在哪些平台上?
  • @nos:嗯,它谈到了POLLHUP。不过没有提到SIGHUP
猜你喜欢
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 2019-01-22
  • 2012-02-06
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多