Exemple #1
0
        public PRServer(int port, NetworkObjectsManager manager, IRecordSentPackets sentPacketRecorder, IRecordReceivedPackets receivedPacketRecorder, INetworkMonitor monitor)
        {
            this.objectsManager         = manager;
            this.sentPacketRecorder     = sentPacketRecorder;
            this.receivedPacketRecorder = receivedPacketRecorder;
            this.monitor = monitor;

            udpClient = new UdpClient(47777);

            udpClient.Client.IOControl(
                (IOControlCode)SIO_UDP_CONNRESET,
                new byte[] { 0, 0, 0, 0 },
                null
                );

            udpClient.BeginReceive(new AsyncCallback(UdpServerData), udpClient);

            parsers.Add(Packet.PACKET_CONNECTIONREQUEST, ParseConnectionRequestPacket);
            parsers.Add(Packet.PACKET_CHALLENGERESPONSE, ParseChallengeResponsePacket);
            parsers.Add(Packet.PACKET_CLIENTREADY, ParseClientReadyPacket);
            parsers.Add(Packet.PACKET_ACK, ParseAck);
            parsers.Add(Packet.PACKET_STATEREQUEST, ParseStateRequestPacket);
            parsers.Add(Packet.PACKET_NETWORKMESSAGE, ServerStage.ParseNetworkMessages);
            parsers.Add(Packet.PACKET_CLIENTDISCONNECTED, ParseClientDisconnectPacket);

            Thread timeoutDetectionThread = new Thread(new ThreadStart(ChangeDetectionThread));

            timeoutDetectionThread.Start();
        }
Exemple #2
0
        public PRClient(NetworkObjectsManager manager, IRecordSentPackets sentPacketRecorder, IRecordReceivedPackets receivedPacketRecorder, INetworkMonitor monitor)
        {
            this.objectsManager         = manager;
            this.sentPacketRecorder     = sentPacketRecorder;
            this.receivedPacketRecorder = receivedPacketRecorder;
            this.monitor = monitor;

            IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();

            IPEndPoint[] portInfo = properties.GetActiveUdpListeners();
            List <int>   ports    = portInfo.Select(info => info.Port).ToList();

            myPort = Identification.GetUniqueIdentifierFromList(ports, 5000, 50000);

            udpClient = new UdpClient(myPort);

            udpClient.Client.IOControl(
                (IOControlCode)SIO_UDP_CONNRESET,
                new byte[] { 0, 0, 0, 0 },
                null
                );

            udpClient.BeginReceive(new AsyncCallback(UdpClientData), udpClient);

            Debug.Log("Welcome to my client!");
            Debug.Log("You have been assigned port # " + myPort);

            SetupParsers();
            InitializeThreads();
        }