示例#1
0
        private void AcceptCallback(IAsyncResult result)
        {
            try
            {
                // accept the client and create the object
                var clientSocket = serverSocket.EndAccept(result);

                var newClient = new Client(this, clientSocket);
                newClient.StartRecieve();

                // trigger the event
                OnNewClient(this, new NewClientEventArgs(newClient));

                // restart accept
                serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null);
            }
            catch (SocketException exc)
            {
                serverSocket.Close();
                Console.WriteLine("Socket exception: " + exc.SocketErrorCode);
            }
            catch (Exception exc)
            {
                serverSocket.Close();
                Console.WriteLine("Exception: " + exc);
            }
        }
示例#2
0
        protected GenericSession(Client client, IEventAggregator aggregator)
        {
            this.client = client;
            this.aggregator = aggregator;

            State = new InvalidState();
        }
示例#3
0
 private void Reset()
 {
     client = null;
     buffer = new byte[]{};
     dataLen = 0;
     newClient = false;
     lostClient = false;
     newData = false;
 }
示例#4
0
        private void OnNewClient(Object sender, NewClientEventArgs e)
        {
            newClient = true;

            client = e.Client;

            client.OnNewData += OnNewData;
            client.OnLostClient += OnLostClient;
        }
示例#5
0
 // TODO: add whatever properties are needed in the login server per session here
 // but be careful not to introduce too much state!
 public GameSession(Client client, IEventAggregator aggregator)
     : base(client, aggregator)
 {
     State = new HandshakeState();
 }
示例#6
0
 public NewDataEventArgs(Client client, byte[] buffer, int dataLen)
 {
     this.Client = client;
     this.Buffer = buffer;
     this.DataLen = dataLen;
 }
示例#7
0
 public NewClientEventArgs(Client client)
 {
     this.Client = client;
 }
示例#8
0
 public LostClientEventArgs(Client client)
 {
     this.Client = client;
 }