Esempio n. 1
0
        private void Accept(IAsyncResult ar)
        {
            TcpListener tcpListener = (TcpListener)ar.AsyncState;
            TcpClient   client      = tcpListener.EndAcceptTcpClient(ar);

            Vdb.Session newSession = new Vdb.Session();
            newSession.client = client;
            sessions.Add(newSession);
            OnAcceptClient(newSession);
            client.GetStream().BeginRead(newSession.readBuffer, 0, 4096, new AsyncCallback(Read), newSession);
        }
Esempio n. 2
0
        private void Read(IAsyncResult ar)
        {
            Vdb.Session session = (Vdb.Session)ar.AsyncState;
            int         readed  = session.client.GetStream().EndRead(ar);

            // Packet Header
            if (readed < 0)
            {
                return;
            }

            Byte[] sizeBuffer = new Byte[4];
            Array.Copy(session.readBuffer, sizeBuffer, 4);
            int packetSize = BitConverter.ToInt32(sizeBuffer, 0);

            if (readed < packetSize + 4)
            {
                return;
            }

            byte[] packetBuffer = new byte[packetSize];
            Array.Copy(session.readBuffer, 4, packetBuffer, 0, packetSize);
            Network.PacketParser.ParseAndDeliver(packetHandler, session, packetBuffer);
        }
Esempio n. 3
0
 public void CloseSession(Vdb.Session session)
 {
     session.client.Close();
     sessions.Remove(session);
 }