首先要打开监听

            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;
            // 处理方法
        }

  

 

 

 

 

 posted on 2012-02-02 09:10  pct_zhang  阅读(17240)  评论(0编辑  收藏  举报