我想在Linux上使用TCP 和標準的socket.h庫實現一個簡單的客戶端/服務器程序。服務器處理多個客戶端,每個客戶端可以隨時關閉()或關閉()套接字。TCP:recv()得到ECONNRESET
在服務器端(使用非阻塞讀):
int nBytes;
if ((nBytes = recv(socket, buffer, BUFFER_SIZE, MSG_DONTWAIT)) == -1)
{
if (errno != EAGAIN && errno != EWOULDBLOCK)
{
//print to log
}
}
if (nBytes == 0)
{
//other side closed the connection
}
我得到的recv()返回-1和錯誤設置爲ECONNRESET。如果客戶端已經關閉連接,不應該recv()返回0?
tcpdump會告訴你實際發生的情況 – pm100