我有一个小型服务器程序,它接受TCP或本地UNIX套接字上的连接,读取一个简单的命令,并根据命令发送一个回复.问题是客户端有时可能对答案没兴趣并且提前退出,因此写入该套接字将导致SIGPIPE并使我的服务器崩溃.什么是防止崩溃的最佳做法?有没有办法检查线的另一边是否还在读?(select()似乎在这里不起作用,因为它总是说套接字是可写的).或者我应该用处理程序捕获SIGPIPE并忽略它?
我正在尝试连接两台机器,比如机器A和B.我正在尝试从A到B发送TCP消息(单向).在正常情况下,这工作正常.当通信顺畅时,如果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);
}
Run Code Online (Sandbox Code Playgroud)
如何找到另一侧插座是否关闭?如果目标套接字关闭,send会返回什么?会选择有用.