// 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); } }
// 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); } }