Беда с розетками - PullRequest
       9

Беда с розетками

0 голосов
/ 06 июня 2018

Мне нужно сделать клиент-серверную игру с 2 игроками.Я связываю клиентские сокеты на localhost и разных портах.Для подключения клиенты отправляют сериализованные сообщения с заголовком enum и своими IPEndPoints в качестве значения.Когда сервер получает сообщения о соединении от разных клиентов, они имеют одинаковые порты.Как это исправить?

Метод получения соединений:

        public static void GetConnections()
    {
        while (true)
        {
            Console.WriteLine("Waiting for connections...");
            var len = ServerSocket.Receive(TempData);
            var msg = (NetMessage)DataSerializer.Deserialize(TempData);
            Console.WriteLine(msg.Data.ToString());
            if (msg.PacketType == PacketType.CONNECT)
            {
                String[] IP = msg.Data.ToString().Split(':');
                if (Player1IP == null)
                {
                    Player1IP = new IPEndPoint(IPAddress.Parse(IP[0]), Int32.Parse(IP[1]));
                    Console.WriteLine("Approved connection of player 1 with remote endpoint: " + Player1IP);
                }
                else if (Player2IP == null)
                {
                    Player2IP = new IPEndPoint(IPAddress.Parse(IP[0]), Int32.Parse(IP[1]));
                    Console.WriteLine("Approved connection of player 2 with remote endpoint: " + Player2IP);
                }
                if (Player1IP != null && Player2IP != null)
                {
                    Console.WriteLine("Both player are connected");
                    Console.WriteLine(Player1IP + " " + Player2IP);
                    return;
                }
            }
        }

Способ подключения (запускается один раз):

        public void GetConnection()
    {
        NetMessage msg = new NetMessage(PacketType.CONNECT, ClientSocket.LocalEndPoint.ToString());
        var bytes = DataSerializer.Serialize(msg);
        ClientSocket.SendTo(bytes, ServerIP);
        BeganConnection = true;
    }
...