Пример #1
0
        private void waitCallback(object obj)
        {
            SocketMessager     socketMessager = (SocketMessager)obj;
            AbstractSocketData socketData     = socketMessager.decode();

            if (this.ResultHandler != null)
            {
                this.ResultHandler(this, new SocketDataEventArgs(socketData));
            }
        }
Пример #2
0
        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();
                    }
                }
            }
        }