private void ProcessAccept(SocketAsyncEventArgs acceptEventArgs) { App.Logger.Info("Client connection accepted. Local Address: {0}, Remote Address: {1}", acceptEventArgs.AcceptSocket.LocalEndPoint, acceptEventArgs.AcceptSocket.RemoteEndPoint); AsyncSocketUserToken userToken = AsyncSocketUserTokenPool.Pop(); AsyncSocketUserTokenList.Add(userToken); //添加到正在连接列表 userToken.ConnectSocket = acceptEventArgs.AcceptSocket; userToken.ConnectDateTime = DateTime.Now; try { bool willRaiseEvent = userToken.ConnectSocket.ReceiveAsync(userToken.ReceiveEventArgs); //投递接收请求 if (!willRaiseEvent) { lock (userToken) { ProcessReceive(userToken.ReceiveEventArgs); } } } catch (Exception E) { App.Logger.Error("Accept client {0} error, message: {1}", userToken.ConnectSocket, E.Message); App.Logger.Error(E.StackTrace); } StartAccept(acceptEventArgs); //把当前异步事件释放,等待下次连接 }
private void ProcessAccept(SocketAsyncEventArgs acceptEventArgs) { Console.WriteLine("Client connection accepted. Local Address: {0}, Remote Address: {1}", acceptEventArgs.AcceptSocket.LocalEndPoint, acceptEventArgs.AcceptSocket.RemoteEndPoint); AsyncSocketUserToken userToken = AsyncSocketUserTokenPool.Pop(); AsyncSocketUserTokenList.Add(userToken); userToken.ConnectSocket = acceptEventArgs.AcceptSocket; userToken.ConnectDateTime = DateTime.Now; try { bool willRaiseEvent = userToken.ConnectSocket.ReceiveAsync(userToken.ReceiveEventArgs); if (!willRaiseEvent) { lock (userToken) { ProcessReceive(userToken.ReceiveEventArgs); } } } catch (Exception E) { Console.WriteLine("Accept client {0} error, message: {1}", userToken.ConnectSocket, E.Message); Console.WriteLine(E.StackTrace); } StartAccept(acceptEventArgs); }
public SocketClient() : base(1) { UserToken = AsyncSocketUserTokenPool.Pop(); AsyncSocketUserTokenList.Add(UserToken); }