Exemplo n.º 1
0
        async public void Start()
        {
            if (_isListening)
                throw new InvalidOperationException("Server is already listening");

            _listener.Start();
            _isListening = true;

            while (_isListening)
            {
                try
                {
                    var client = await _listener.AcceptTcpClientAsync();
                    var session = new TcpSession(client);
                    session.PacketReceived += ClientPacketReceived;
                    session.Disconnected += ClientDisconnected;
                    session.Error += ClientError;

                    if (!_sessions.TryAdd(session.Guid, session)) continue;
                    RaiseClientConnected(new ClientConnectedEventArgs(session));
                    session.StartListening();
                }
                catch (ObjectDisposedException) { break; }
            }
        }
Exemplo n.º 2
0
        async public void Start()
        {
            if (_isListening)
            {
                throw new InvalidOperationException("Server is already listening");
            }

            _listener.Start();
            _isListening = true;

            while (_isListening)
            {
                try
                {
                    var client = await _listener.AcceptTcpClientAsync();

                    var session = new TcpSession(client);
                    session.PacketReceived += ClientPacketReceived;
                    session.Disconnected   += ClientDisconnected;
                    session.Error          += ClientError;

                    if (!_sessions.TryAdd(session.Guid, session))
                    {
                        continue;
                    }
                    RaiseClientConnected(new ClientConnectedEventArgs(session));
                    session.StartListening();
                }
                catch (ObjectDisposedException) { break; }
            }
        }