gpt4 book ai didi

c - 是否有任何 TCP 设置影响 SIGPIPE?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:52 26 4
gpt4 key购买 nike

我在两个系统上测试了相同的测试代码(服务器 - 客户端)。在一个中,我得到了 SIGPIPE,在另一个中,我没有得到 SIGPIPE。

测试场景如下:

客户端

  1. 连接到服务器
  2. 从服务器接收数据
  3. 发送数据
  4. 关闭套接字

服务器

  1. 接受来自服务器的连接
  2. 向客户发送数据
  3. 接收数据
  4. 发送数据
  5. 关闭套接字

在一个系统中(客户端和服务器运行在同一系统上),SIGPIPE 在客户端或服务器端随机发生。

但是,在另一个系统中,同样的测试代码不会出现这个问题。

我想知道管道破裂是否与 TCP 设置有关。

最佳答案

您也可以通过以下代码忽略来自套接字的 SIGPIPE 以防止应用程序崩溃:

int set = 1;
setsockopt(sd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int));

其中 sd 是您接收 SIGPIPE 的套接字。

关于c - 是否有任何 TCP 设置影响 SIGPIPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com