void EnsureInitialized() { if (!_isInitialized) { short wVersion = 0x0202; NativeSockets.WSAData wsaData = new NativeSockets.WSAData(); SocketError err = NativeSockets.WSAStartup(wVersion, out wsaData); if (err != SocketError.Success) { throw new SocketException((int)err); } _eventSignalThread = new AutoResetEvent(false); _evtSocketRecv = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); _evtSocketRecv.Bind(new IPEndPoint(IPAddress.Loopback, 0)); _evtSocketSend = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); _evtSocketSend.Bind(new IPEndPoint(IPAddress.Loopback, 0)); _threadWaitForEvents = new Thread(new ThreadStart(WaitForNetworkEvents)); _threadWaitForEvents.Start(); _isInitialized = true; } }
int ISocketsDriver.getaddrinfo(IntPtr nodename, IntPtr servname, IntPtr hints, out IntPtr res) { res = IntPtr.Zero; int ret = NativeSockets.getaddrinfo(nodename, servname, hints, out res); StoreLastError(); return(ret); }
void StoreLastError() { _dwLastError = NativeSockets.WSAGetLastError(); }
void ISocketsDriver.freeaddrinfo(IntPtr ai) { NativeSockets.freeaddrinfo(ai); }