1. 程式人生 > >Socket的監聽的三種方式

Socket的監聽的三種方式

首先要開啟監聽

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

1. AcceptAsync非同步方式

1 2 3 4 5 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方式 

1 2 3 4 5 6 7 while (true
) { Socket acceptSocket = Listener.Accept(); if (acceptSocket != null) { // 處理程式碼
1 2 } }

 3. BeginAccept方式

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