Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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
recv在客户端套接字关闭时不向我发送-1()_C_Linux_Sockets_Posix - Fatal编程技术网

recv在客户端套接字关闭时不向我发送-1()

recv在客户端套接字关闭时不向我发送-1(),c,linux,sockets,posix,C,Linux,Sockets,Posix,服务器代码 ... client_socket = accept(server_socket, (struct sockaddr *) &client_address, &client_address_len); ... for (;;) { if ( recv(client_socket, recived_buffer, MAX_MSG_LENGTH, 0) < 0 ) { perror("ERROR leyendo el socket")

服务器代码

...
client_socket = accept(server_socket, (struct sockaddr *) &client_address,     &client_address_len);
...
for (;;) {
    if ( recv(client_socket, recived_buffer, MAX_MSG_LENGTH, 0) < 0 ) {
        perror("ERROR leyendo el socket");
        exit(1)
    }
}
。。。
client\u socket=accept(server\u socket,(struct sockaddr*)和client\u address,以及client\u address\u len);
...
对于(;;){
if(recv(客户端套接字,接收缓冲区,最大消息长度,0)<0){
perror(“leyendo el插座错误”);
出口(1)
}
}
如果我杀死客户端,服务器将无限期地关闭


任何提示?

当客户端关闭连接时,服务器端调用将返回值0

从手册页:

返回值

这些调用返回接收的字节数,如果发生错误,则返回-1。对等方执行有序关机后,返回值将为0



还需要注意的是,在有数据可读取之前,调用将被阻塞。如果不想阻塞,则需要确保在呼叫前将套接字设置为非阻塞或使用,或查看是否有传入数据。

当客户端关闭连接时,服务器端呼叫将返回值0

从手册页:

返回值

这些调用返回接收的字节数,如果发生错误,则返回-1。对等方执行有序关机后,返回值将为0



还需要注意的是,在有数据可读取之前,调用将被阻塞。如果不想阻塞,则需要确保在调用前将套接字设置为非阻塞或使用,或查看是否有传入数据。

recv返回0-当对等方关闭连接时,另一部分将其解释为EOF

recv返回0-当对等方关闭连接时,另一部分将其解释为EOF