private void receiverRun() { IPEndPoint ep = (IPEndPoint)sock.RemoteEndPoint; List <byte> incomingData = new List <byte>(); byte[] buffer = null; byte[] temp = null; int received = 0; while (sock.Connected) { try { while (true) { buffer = new byte[1024]; received = sock.Receive(buffer); if (received == 1024) { incomingData.AddRange(buffer); } else { temp = new byte[received]; Array.Copy(buffer, temp, received); incomingData.AddRange(temp); } if (Enumerable.SequenceEqual(incomingData.GetRange(incomingData.Count - Registry.endOfPacket.Length, Registry.endOfPacket.Length).ToArray(), Registry.endOfPacket)) { break; } } if (Side.isClient) { ClientNetworkManager.receivedPacketFromServer(deserialize(incomingData.ToArray())); } else { ServerNetworkManager.receivedPacketFromClient(this, deserialize(incomingData.ToArray())); } incomingData.Clear(); } catch (Exception ex) { try { if (sock.Poll(1000, SelectMode.SelectRead) && sock.Available == 0) { break; } } catch (Exception) { break; } Console.WriteLine(ex.Message); Console.WriteLine("[Network]: Chyba při přijímání packetu! Ignoruji..."); } } while (transmitter.IsAlive) { Thread.Sleep(1); } if (!Side.isClient) { Logger.log("[Network]: Pripojení ztraceno (" + ep.Address + ":" + ep.Port + ")"); } }