udpclient之異步編程

  首先,自定義一個類,這了類以後會用到。編程

class UdpState
    {
        public UdpClient u;
        public IPEndPoint e;
    }異步

如下是主要代碼,雖然是用udpclient來編程,可是這是編寫的Server端代碼,主要用到了異步接收方發,具體的方法講解能夠在MSDN上查看:this

        public static void ReceiveCallback(IAsyncResult ar)
        {
            UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u;
            IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;spa

            Byte[] receiveBytes = u.EndReceive(ar, ref e);
            string receiveString = Encoding.ASCII.GetString(receiveBytes);string

            Console.WriteLine("Received: {0}", receiveString);
            messageReceived = true;
        }it

        public static void ReceiveMessages()
        {
              int listenPort=11000;
            // Receive a message and write it to the console.
            IPEndPoint e = new IPEndPoint(IPAddress.Any, listenPort);
            UdpClient u = new UdpClient(e);console

            UdpState s = new UdpState();//此處用到了自定義的類
            s.e = e;
            s.u = u;class

            Console.WriteLine("listening for messages");
            u.BeginReceive(new AsyncCallback(ReceiveCallback), s);cli

            // Do some work while we wait for a message. For this example,
            // we'll just sleep
            while (!messageReceived)
            {
                Thread.Sleep(10000);
            }
        }coding

相關文章
相關標籤/搜索