我实现了一个允许以黑白方式传输文件的客户端-服务器程序。服务器正在使用 select() 检查套接字的变化。 每个测试都很好,除了这个: - 当服务器正在向客户端发送一个巨大的文件(尚未完成)时,客户端按下“Ctrl-C”以终止客户端程序,然后服务器也被终止:(
片段:
fprintf(stderr,"Reading done, sending ...\n");
if(send(sockClient, sendBuf, chunk_length, 0) < 0)
{
printf("Failed to send through socket %d \n", sockClient);
return -1;
}
fprintf(stderr,"Sending done\n");
当客户端被杀死时,服务端显示:
user$./server
Reading done, sending ...
Sending done
Reading done, sending ...
Sending done
Reading done, sending ...
Sending done
Reading done, sending ...
user$
这是怎么回事? 感谢您的回答!
最佳答案
您可能想忽略 SIGPIPE。尝试在您的服务器启动中添加类似这样的内容:
#include <signal.h>
signal(SIGPIPE, SIG_IGN);
关于C文件传输问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1678092/