2
我有一個使用winsock2的C++程序。我想知道如何判斷某人與我的程序的關係何時關閉。C++ winsock2,如何判斷連接何時關閉
我有一個使用winsock2的C++程序。我想知道如何判斷某人與我的程序的關係何時關閉。C++ winsock2,如何判斷連接何時關閉
使用select等待讀取套接字;當套接字關閉時,winsock應該報告它是可讀的。然後從套接字接收將給你0字節,告訴你套接字已關閉。
int received_bytes = recv(_socket, buffer, sizeof(buffer)-1,0);
if(received_bytes > 0)
{
//data received
}
else if (received_bytes == 0)
{
//connection closed
}
else
{
//wait for more data
}
當您檢查返回值'recv'它可以返回*要麼* 0,這意味着插座被成功關閉(如你描述),或'SOCKET_ERROR'它告訴你套接字沒有關閉乾淨(例如超時)或您的一方出現錯誤。必須檢查兩個條件才能捕獲連接關閉的所有情況。 – GRB 2009-10-05 21:59:52