private static void NetTick() { var netbuffer = new byte[16936]; var serverEp = (EndPoint) new IPEndPoint(IPAddress.Any, 0); while (true) { try { var recvLen = 0; try { recvLen = _socket.ReceiveFrom(netbuffer, netbuffer.Length, SocketFlags.None, ref serverEp); } catch (SocketException e) { Console.WriteLine("Receive error ({0}): {1}", e.GetType(), e.Message); continue; } if (recvLen <= 0) { continue; } var packet = new NetPacket(); packet.Assign(serverEp, recvLen, netbuffer); if (Networking.IsConnectionlessHeader(packet.Data)) { packet.Message.ReadInt(); // read connectionless header (the -1) _clientState.ProcessConnectionlessPacket(packet); continue; } if (_clientState.NetChannel != null) { _clientState.NetChannel.ProcessPacket(packet, true); } } catch (Exception e) { Console.WriteLine("Unknown network think error ({0}): {1}\n{2}", e.GetType(), e.Message, e.StackTrace); } } }