嘿,我正在使用WSAEventSelect進行套接字事件通知。到目前爲止,一切都很酷,像魅力一樣工作,但有一個問題。WSAEventSelect模型
客戶端是一個.NET應用程序,服務器是用Winsock C++編寫的。在.NET應用程序中,我使用TCP/IP的System.Net.Sockets.Socket類。當我調用Socket.Shutdown()和Socket.Close()方法時,我收到服務器中的FD_CLOSE事件,我很確定沒問題。好的,當我檢查傳遞給WSAEnumNetworkEvents的WSANETWORKEVENTS的iErrorCode時,會發生問題。我檢查一下這樣
if (listenerNetworkEvents.lNetworkEvents & FD_CLOSE)
{
if (listenerNetworkEvents.iErrorCode[FD_CLOSE_BIT] != 0)
{
// it comes here
// which means there is an error
// and the ERROR I got is
// WSAECONNABORTED
printf("FD_CLOSE failed with error %d\n",
listenerNetworkEvents.iErrorCode[FD_CLOSE_BIT]);
break;
}
closesocket(socketArray[Index]);
}
但它無法與WSAECONNABORTED錯誤。爲什麼?
編輯:順便說一句,我在同一臺計算機上運行的客戶端和服務器,是因爲它的呢?當我這樣做時,我收到了FD_CLOSE事件:
server.Shutdown(SocketShutdown.Both); // in .NET C#, client code