关闭套接字的问题。程序停止

时间:2009-01-13 14:47:58

标签: c sockets unix

我在使用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(&current_char, sizeof(char));
    }
    while(current_char != EOF);

}

我应该怎么做才能防止这种情况发生?修改整个源代码以补充此代码段。

2 个答案:

答案 0 :(得分:6)

也许您的应用程序在写入/发送期间接收SIGPIPE而不是忽略它?尝试忽略此信号或为其安装无操作处理程序。

答案 1 :(得分:0)

您确定客户端在从服务器接收数据时没有失败吗?

  1. telnet到您的服务器上查看 它发送的内容

  2. 用。替换您的服务器 netcat以确保客户是 表现正确

  3. 嗅探服务器和之间的流量 客户端使用tcpdump或类似的 工具