Exemple #1
0
        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);
                }
            }
        }