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