我在使用this code时遇到了一些麻烦。问题是,当我请求服务器向我发送一些数据时,客户端只是在服务器尝试向我发送数据时断开连接,应用程序存在。
以下是我认为导致问题的行
int SendBinary(int *byte, int length)
{
int bytes_sent;
bytes_sent = send(connecting_socket, byte, length, 0);
return bytes_sent;
return 0;
}
void SendFile(FILE *fp, int file_size)
{
int current_char = 0;
do{
current_char = fgetc(fp);
if ( current_char == EOF )
break;
SendBinary(¤t_char, sizeof(char));
}
while(current_char != EOF);
}
我应该怎么做才能防止这种情况发生?修改整个源代码以补充此代码段。
答案 0 :(得分:6)
也许您的应用程序在写入/发送期间接收SIGPIPE而不是忽略它?尝试忽略此信号或为其安装无操作处理程序。
答案 1 :(得分:0)
您确定客户端在从服务器接收数据时没有失败吗?
telnet
到您的服务器上查看
它发送的内容
用。替换您的服务器
netcat
以确保客户是
表现正确
嗅探服务器和之间的流量
客户端使用tcpdump
或类似的
工具