public static void Disconnect(ClientConnection clientConnection) { if (!clientConnection.Destructed) { bool removed = ClientConnectionManager.Remove(clientConnection); if (removed) { clientConnection.Destruct(); } } }
private void OnAccept(object sender, SocketAsyncEventArgs args) { if (args.SocketError == SocketError.Success) { Socket socket = args.AcceptSocket; SocketAsyncEventArgs receiveAsyncEventArgs = new SocketAsyncEventArgs(); receiveAsyncEventArgs.SetBuffer(new byte[TcpServerSocket.RECEIVE_BUFFER_SIZE], 0, TcpServerSocket.RECEIVE_BUFFER_SIZE); receiveAsyncEventArgs.Completed += TcpServerSocket.OnReceive; ClientConnection clientConnection = ClientConnectionManager.Create(socket, receiveAsyncEventArgs); receiveAsyncEventArgs.UserToken = clientConnection; if (!socket.ReceiveAsync(receiveAsyncEventArgs)) { TcpServerSocket.OnReceive(null, receiveAsyncEventArgs); } } this.StartAccept(args); }