Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何解决c+中从套接字读写时的连接重置错误+;_C++_Sockets - Fatal编程技术网

C++ 如何解决c+中从套接字读写时的连接重置错误+;

C++ 如何解决c+中从套接字读写时的连接重置错误+;,c++,sockets,C++,Sockets,我的客户端和服务器正在相互发送缓冲区消息。以下是读/写代码的客户端和服务器端部分: 客户端: if (connect( sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr) ) < 0) { perror("ERROR connecting"); return(1); } printf("Recieving Buffer 1 from Server side"); bzero(buffer

我的客户端和服务器正在相互发送缓冲区消息。以下是读/写代码的客户端和服务器端部分:

客户端:

if (connect( sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr) ) < 0) 
{
    perror("ERROR connecting");
    return(1);
}    

printf("Recieving Buffer 1 from Server side"); 

bzero(buffer1,256);
int i = 0;

while (i < 5)
{
    n = read(sockfd,buffer1,sizeof(buffer1));
    if (n<0)
        printf("ERROR reading in socket %d  len %d", n, sizeof(buffer1));

    n = write(sockfd,buff2,sizeof(buff2));
    if(n<0)
        printf("ERROR writing in socket %d  len %d", n, sizeof(buff2));

    printf("\nSent Buffer2 (WON'T TERMINAL TYPE) from client side");

    i++;

}
客户端:

./client 127.0.0.1 9998
Recieving Buffer 1 from Server side
Sent Buffer2 (WON'T TERMINAL TYPE) from client side
Sent Buffer2 (WON'T TERMINAL TYPE) from client side
Sent Buffer2 (WON'T TERMINAL TYPE) from client side
Sent Buffer2 (WON'T TERMINAL TYPE) from client side
Sent Buffer2 (WON'T TERMINAL TYPE) from client side

我想在I=5之后关闭连接,也就是在服务器客户端之间交换了5条缓冲区消息之后,但是程序给出了由对等方重置连接的错误(我猜是客户端的错误)。我该如何解决这个问题?当
i==5
connect!=0时,应
关闭连接。服务器也是如此。进一步阅读:@black我尝试使用if循环,其中I==6,它关闭客户端的套接字。仍然收到相同的错误当
i==5
时,您正在关闭客户端连接,这就是您所说的要执行的操作,也是您看到对等方重置
连接的原因。那么您遇到的实际问题是什么?@unluddite我想从服务器端删除连接重置错误output@Jonsnow29如果客户端关闭了连接,并且您从中/向中读/写,您将得到该错误。
./server 9998
Server Sending (DO TERMINAL TYPE)
Server Sent query 1: FF FD 1E
Server received response: FF FC 18
Server Sent query 2: FF FD 1D
Server received response: FF FC 18
Server Sent query 0: FF FD 18
Server received response: FF FC 18
Server Sent query 1: FF FD 1E
Server received response: FF FC 18
Server Sent query 2: FF FD 1D
Server received response: FF FC 18
Server Sent query 0: FF FD 18
Server received response: FF FC 18
Error writing to socket : Connection reset by peer
./client 127.0.0.1 9998
Recieving Buffer 1 from Server side
Sent Buffer2 (WON'T TERMINAL TYPE) from client side
Sent Buffer2 (WON'T TERMINAL TYPE) from client side
Sent Buffer2 (WON'T TERMINAL TYPE) from client side
Sent Buffer2 (WON'T TERMINAL TYPE) from client side
Sent Buffer2 (WON'T TERMINAL TYPE) from client side