gpt4 book ai didi

c - C中的socket send()卡住

转载 作者:太空狗 更新时间:2023-10-29 15:24:59 30 4
gpt4 key购买 nike

我正在尝试连接两台机器,比如机器 A 和 B。我正在尝试将 TCP 消息从 A 发送到 B(一种方式)。在正常情况下,这工作正常。当通信顺畅时,如果 B 中的套接字关闭,则来自 A 的 send() 将永远卡住。并将进程置于僵尸状态。我在机器 A 中的套接字处于阻塞模式。下面是永远卡住的代码。

           if (send (txSock,&txSockbuf,sizeof(sockstruct),0) == -1) {
printf ("Error in sending the socket Data\n");
}
else {
printf ("The SENT String is %s \n",sock_buf);
}

如何发现另一侧套接字是否已关闭??如果目标套接字关闭,发送返回什么?会选择有帮助。

最佳答案

处于“僵尸”状态的进程意味着它已经退出,但它的 还没有读取它的返回码。可能发生的情况是您的进程正在接收 SIGPIPE 信号(这是您写入关闭的套接字时默认获得的信号),您的程序已经终止,但僵尸状态尚未解决。

此相关问题提供了有关 SIGPIPE 及其处理方式的更多信息:SIGPIPE, Broken pipe

关于c - C中的socket send()卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6837890/

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