我正在尝试连接到客户端到服务器,但它显示由同行重置连接
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
该错误意味着在您编写更多数据时,另一方已关闭连接。您是否可以在客户端执行某些操作取决于接收方关闭连接的原因:
因此,如果日志文件中存在任何错误,则第一步是查看远程计算机。
另外两种情况是您的错误:您要么发送太多数据,要么没有正确实施协议。例如:服务器需要“字节数”,然后是N个字节的数据。您发送“8”然后发送10个字节。在8个字节后,另一侧将停止。
其他协议具有“退出”或“再见”命令,这些命令会导致另一方关闭连接。如果您尝试在此之后发送更多数据,那将失败。