Socket的監聽的三種方式


 首先要打開監聽

            Listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
            IPEndPoint hostEntry = new IPEndPoint(getLocalmachineIPAddress(), ServerPort);
            Listener.Bind(hostEntry);
            Listener.Listen(ConnectionsQueueLength);

  

1. AcceptAsync異步方式

            socketEventArg = new SocketAsyncEventArgs();
            socketEventArg.Completed += new EventHandler<SocketAsyncEventArgs>(SocketEventArg_Completed);
            socketEventArg.RemoteEndPoint = hostEntry;
            socketEventArg.UserToken = Listener;
            Listener.AcceptAsync(socketEventArg);

  

        void SocketEventArg_Completed(object sender, SocketAsyncEventArgs e)
        {
            if (e.LastOperation == SocketAsyncOperation.Accept)
            {
                Socket acceptSocket = e.AcceptSocket;

                if (acceptSocket != null)
                {
                     // 處理方法
                }
            }

            e.AcceptSocket = null;
            Listener.AcceptAsync(e);

        }

  

 

2. Accept方式 

            while (true)
            {
                Socket acceptSocket = Listener.Accept();

                if (acceptSocket != null)
                {
                    // 處理代碼
                }
            }

  

 3. BeginAccept方式

            while (true)
            {
                Listener.BeginAccept(new AsyncCallback(AcceptCallBack), Listener);
            }
 
        private void AcceptCallBack(IAsyncResult result)
        {
            Socket acceptSocket = (Socket)result.AsyncState;
            // 處理方法
        }

  

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM