Ejemplo n.º 1
0
    private void Server_MessageRecived(IAsyncResult ar)
    {
        if (ar.IsCompleted)
        {
            var msg = new CheesServerData();

            try
            {
                if (!socket.Connected)
                {
                    throw new Exception("Połączenie z serwerem zostało zakończone");
                }
                var bytesIN = socket.GetStream().EndRead(ar);
                if (bytesIN == 0)
                {
                    throw new Exception("Serwer zerwał połączenie");
                }

                if (bytesIN > 0)
                {
                    message     = DataChanger.BytesToString(_buffer, false);
                    socketReady = true;
                }

                this.BytesReceived += bytesIN; // zwiekszamy liczbe odczytanych bytow
                Array.Clear(_buffer, 0, _buffer.Length);
                socket.GetStream().BeginRead(_buffer, 0, _buffer.Length, Server_MessageRecived, null);

                if (this.BytesReceived >= DataChanger.MaxCommandLength)
                {
                    this.BytesReceived = 0;
                }//zerujemy bity
            }
            catch (Exception ex)
            {
                this.DisconnectClient();
            }
        }
    }