我在程序中使用套接字让客户端与证明者即服务器进行通信。首先,客户端将本地文件发送给证明者,然后成功。然后,客户端将该文件的签名发送给证明者,但程序已卡住。我认为证明者的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);
}
答案 0 :(得分:0)
我建议你在调试模式下启动客户端和服务器,以了解究竟发生了什么。就目前而言,很难说出通信失速的原因究竟是什么。可能存在框架问题,即服务器等待更多数据,而客户端认为它已经发送了所有内容。我看到很多情况recv
被假定为框架,而不是TCP。