private void waitCallback(object obj) { SocketMessager socketMessager = (SocketMessager)obj; AbstractSocketData socketData = socketMessager.decode(); if (this.ResultHandler != null) { this.ResultHandler(this, new SocketDataEventArgs(socketData)); } }
private void baseListen() { bool flag = true; while (this.isListening) { byte[] array = new byte[63488]; System.Net.EndPoint endPoint = null; try { endPoint = new System.Net.IPEndPoint(this.ipAddress, this.port); this.serverSocket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp); this.serverSocket.Bind(endPoint); if (flag) { DebugCenter.GetInstance().clearStatusCode(DebugCenter.ST_TrapPortNA, true); flag = false; } this.serverSocket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, System.Net.Sockets.SocketOptionName.ReceiveTimeout, 0); int num = this.serverSocket.ReceiveFrom(array, System.Net.Sockets.SocketFlags.None, ref endPoint); if (num > 0 && this.isListening) { string[] separator = new string[] { ":" }; string[] array2 = endPoint.ToString().Split(separator, System.StringSplitOptions.None); SocketMessager socketMessager = new SocketMessager(); socketMessager.Target = array2[0]; socketMessager.Port = System.Convert.ToInt32(array2[1]); socketMessager.DataLenth = num; socketMessager.DataBytes = array; System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(this.waitCallback), socketMessager); } } catch (System.Exception) { try { System.Threading.Thread.Sleep(100); } catch (System.Exception) { } } finally { if (this.serverSocket != null) { this.serverSocket.Close(); } } } }