发生问题我将使用WSAEventSelect函数来处理网络事件,代码如下:
AutoResetEvent[] EventArray = new AutoResetEvent[1];
AutoResetEvent clientEvent = new AutoResetEvent(false);
EventArray[0] = clientEvent;
if (NetWork.WSAEventSelect(m_clientSocket, EventArray[0], NetWork.FD_READ | NetWork.FD_CLOSE) == -1)
// (m_clientSocket is passed by another function which presents the client socket: m_clientSocket = Socket.EndAccept(ar))
{Console.WriteLine("Get Last Error: {0}",NetWork.WSAGetLastError());}
WSAEventSelect的定义是:
[DllImport("Ws2_32.dll")]
public static extern int WSAEventSelect(Socket s, EventWaitHandle e, int eventType);
FD_READ和FD_CLOSE的定义是:
public const int FD_READ_BIT = 0;
public const int FD_READ = (1 << FD_READ_BIT);
public const int FD_CLOSE_BIT = 5;
public const int FD_CLOSE = (1 << FD_CLOSE_BIT);
WSAEventSelect函数的返回错误为-1,最后一个错误:10038,称为:WSAENOTSOCK
请咨询
由于