клиенты многоадресной рассылки, подключенные через hamachi

#c# #multicast #hamachi

Вопрос:

Я создал сервер, который использует многоадресные сокеты UDP. Я могу запустить сервер в своей сети и связаться с каждым клиентом. Проблема в том, что сейчас я пытался связаться с клиентами, подключенными через hamachi. Я читал, что он поддерживает многоадресную рассылку, однако сообщения, похоже, не принимаются.

Вот как я создаю udpclient:

         localIPaddress = IPAddress.Any;
        multicastAddress = = IPAddress.Parse("233.0.0.2");
        multicastPort = 7778;

        // Create endpoints
        multicastEndPoint = new IPEndPoint(multicastAddress, multicastPort);
        remoteEndPoint = new IPEndPoint(_localIPaddress, multicastPort);

        // Create and configure UdpClient
        socket = new UdpClient();
        // The following three lines allow multiple clients on the same PC
        socket.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
        socket.ExclusiveAddressUse = false;
        // Bind, Join
        socket.Client.Bind(remoteEndPoint);
        socket.JoinMulticastGroup(multicastAddress);

        // Start listening for incoming data
        socket.BeginReceive(new AsyncCallback(ReceiveCallback), null);
 

Вот как я получаю информацию:

     private void ReceiveCallback(IAsyncResult _result)
    {
        try
        {
            IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, multicastPort);
            byte[] data = socket.EndReceive(_result, ref clientEndPoint);
            // Restart listening for udp data packages
            socket.BeginReceive(new AsyncCallback(ReceiveCallback), null);

            if (data.Length < 4)
            {
                Disconnect();
                return;
            }

            // Handle Data
            using (Packet packet = new Packet(data))
            {
                HandleData(packet);
            }
        }
        catch (Exception ex)
        {
            if (instance.isConnected)
                Debug.Log($"Error receiving UDP Multicast data: {ex}");
        }
    }
 

И вот как я отправляю информацию:

     public void SendData(Packet _packet)
    {
        try
        {
            socket.Send(_packet.ToArray(), _packet.Length(), multicastEndPoint);
        }
        catch (Exception ex)
        {
            Debug.Log($"Error multicasting UDP data: {ex}");
        }
    }
 

Любая информация была бы признательна, так как не так много информации о том, как это решить.

Комментарии:

1. socket.JoinMulticastGroup( только с int в качестве аргумента?

2. о, извините, это опечатка в посте. В коде я использую адрес многоадресной рассылки. Спасибо, что заметили, я немедленно исправлюсь.