使用socket to communicat的程序已经卡住了

时间:2016-07-29 08:31:17

标签: c linux sockets

我在程序中使用套接字让客户端与证明者即服务器进行通信。首先,客户端将本地文件发送给证明者,然后成功。然后,客户端将该文件的签名发送给证明者,但程序已卡住。我认为证明者的recv功能无法接收任何数据,因此失败了,但我不知道它为什么会发生。谁能解释一下呢?

/* send file */
if (on_cmd_send_file_client(sockProver, username, party, filename, blocksize, blocknum)) {
    printf("%s(%d)-%s:%d-%s\n", __FILE__, __LINE__, __FUNCTION__, errno, strerror(errno));
    return (errno ? errno : -1);
}

/* send signature */
length = pairing_length_in_bytes_G1(pairing);
if (on_cmd_send_sig_client(sockProver, username, party, filename, length, blocknum)) {
    printf("%s(%d)-%s:%d-%s\n", __FILE__, __LINE__, __FUNCTION__, errno, strerror(errno));
    return (errno ? errno : -1);
}

1 个答案:

答案 0 :(得分:0)

我建议你在调试模式下启动客户端和服务器,以了解究竟发生了什么。就目前而言,很难说出通信失速的原因究竟是什么。可能存在框架问题,即服务器等待更多数据,而客户端认为它已经发送了所有内容。我看到很多情况recv被假定为框架,而不是TCP。