C文件传输问题

标签 c sockets

我实现了一个允许以黑白方式传输文件的客户端-服务器程序。服务器正在使用 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/

相关文章:

c - 错误 : format'%s' expects argument of type 'char *' , 但参数 2 的类型为 'int' [-Wformat=]

c++ - 通过使用(某种程度上)全局变量与静态函数变量来初始化值?

Java Socket读取大数据遇到间歇性错误

c - 如何防止 SIOCGIFADDR 失败?

c++ - 代码块 16 位消息

c - 由于没有这样的设备或地址,打开设备文件失败

c - 我遇到了 "Buffer overflow-array index out of bounds"错误

sockets - 我怎样才能让 uWSGI 监听另一台机器?

c++ - 设置大套接字接收缓冲区时,setsockopt() 不返回错误

sockets - 获取关闭事件处理程序内套接字的 IP 地址