Exemple #1
0
        // Metoda odbierająca pakiety od serwera
        private async void HandleReceivingPackets()
        {
            while (true)
            {
                Packet receivedPacket;
                try
                {
                    receivedPacket = await _packetFormatter.DeserializeAsync(_stream);
                }
                catch (Exception)
                {
                    Console.WriteLine("Server was forcibly closed");
                    _stream.Close();
                    _client.Close();
                    break;
                }

                // Strumień zosał zamknięty przez serwer
                if (receivedPacket == null)
                {
                    _client.Client.Shutdown(SocketShutdown.Both);
                    _client.Close();
                    if (_quiting)
                    {
                        QuitProgram();
                    }

                    break;
                }

                ProcessPacket(receivedPacket);
            }
        }
Exemple #2
0
        // Metoda odbierająca pakiety od danego klienta
        private async void HandleReceivingFromClient(ClientData client)
        {
            var stream = client.Socket.GetStream();

            while (true)
            {
                if (client.ToClose)
                {
                    EndConnection(client);
                    Console.WriteLine($"Client {client.Id} disconnected successfully");
                    break;
                }

                Packet receivedPacket;
                try
                {
                    receivedPacket = await _packetFormatter.DeserializeAsync(stream);
                }
                catch (Exception)
                {
                    Console.WriteLine($"Connection with client {client.Id} was forcibly closed");
                    EndConnection(client);
                    break;
                }

                // Klient rozłączył się bez wcześniejszego wysłania pakietu kończącego
                if (receivedPacket == null)
                {
                    Console.WriteLine($"Connection with client {client.Id} was forcibly closed");
                    EndConnection(client);
                    break;
                }

                ProcessPacket(client, receivedPacket);
            }
        }