在C#中使用WSAEventSelect时发生套接字错误

时间:2014-11-17 21:21:23

标签: c# networking

发生问题我将使用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

请咨询

由于

0 个答案:

没有答案