gpt4 book ai didi

c - 如何修复 C 中对等方重置的连接

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:48 26 4
gpt4 key购买 nike

我正在尝试将客户端连接到服务器,但它显示连接已被对等方重置

printf("Client Sends    **** |Version = %2u | Packet Type = %2u | Packet Length = %d | ClientID = %d | **** \n", SendHeader.ProtocolVersion, SendHeader.PacketType,SendHeader.PacketLength, SendHeader.ClientId);
int ResultReceived = 0;
while (1) {
if ((recv(sockfd, &RecvHeader, sizeof(RecvHeader), 0)) <= 0) {
perror("recv invalid Bet");
close(sockfd);
exit(1);
}
printf("\n\nClient Receiv`enter code `es **** |Version = %2u | Packet Type = %2u | Packet Length = %d | ClientID = %d | **** `enter code here`\n",RecvHeader.ProtocolVersion`RecvHeader.PacketType,RecvHeader.PacketLength, RecvHeader.ClientId);
switch (RecvHeader.PacketType) {
case BEGASEP_ACCEPT:
printf("\n");
Begasep_AcceptMsg AcceptMessage;
if ((recv(sockfd, &AcceptMessage, sizeof(AcceptMessage), 0)) <= 0) {
perror("recv");
exit(1);

输出:

client: connecting to 127.0.0.1

Client Sends **** |Version = 1 | Packet Type = 1 | Packet Length = 4 | ClientID = 0 |

**** recv invalid Bet: Connection reset by peer

最佳答案

该错误意味着另一端在您写入更多数据时关闭了连接。您是否可以在客户端对此做些什么取决于接收方关闭连接的原因:

  • 程序崩溃或重启
  • 它认为它有足够的数据
  • 你告诉它关闭连接然后继续使用它

所以第一步是查看远程计算机的日志文件是否有任何错误。

另外两种情况是您这边的错误:您要么发送了太多数据,要么您没有正确实现协议(protocol)。示例是: 服务器需要“字节数”,然后是 N 字节数据。您发送“8”,然后发送 10 个字节。 8 个字节后,另一端将停止。

其他协议(protocol)具有“退出”或“再见”命令,可导致另一方关闭连接。如果您在此之后尝试发送更多数据,则会失败。

关于c - 如何修复 C 中对等方重置的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55398934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com