Трансляция и получение сообщений с помощью UdpClient

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

Мой сервер отправляет сообщения, а мой клиент их получает. Я отключил брандмауэр на обеих машинах, проблема не в этом.

Сервер выглядит так:

var udpclient = new UdpClient();

IPAddress multicastAddress = IPAddress.Parse("239.0.0.222");
udpclient.JoinMulticastGroup(multicastAddress);
var endPoint = new IPEndPoint(multicastAddress, 2222);

while(true)
{
    Byte[] buffer = Encoding.Unicode.GetBytes(Dns.GetHostName());
    udpclient.Send(buffer, buffer.Length, endPoint);

    Console.WriteLine("Broadcasting server hostname: {0}", Dns.GetHostName());
    Thread.Sleep(3000);
}

И клиент выглядит так:

var client = new UdpClient { ExclusiveAddressUse = false };

var ipEndPoint = new IPEndPoint(IPAddress.Any, 2222);

client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
client.ExclusiveAddressUse = false;

client.Client.Bind(ipEndPoint);

IPAddress multicastaddress = IPAddress.Parse("239.0.0.222");
client.JoinMulticastGroup(multicastaddress);

Byte[] data = client.Receive(ref ipEndPoint);
string strData = Encoding.Unicode.GetString(data);
Console.WriteLine("Received hostname {0} from the server", strData);

Console.WriteLine("I'm done. Press any key to close me.");
Console.ReadLine();

Думаю проблема не в коде, а в сети. Любые идеи о том, как проверить, в чем проблема? заранее спасибо


person Dante    schedule 13.02.2014    source источник
comment
Сначала попробуйте установить TCP-соединение и посмотрите, сможете ли вы заставить их общаться друг с другом. UDP — это протокол без установления соединения, и он не гарантирует, что сообщения будут доставлены в пункт назначения.   -  person Adam Sears    schedule 14.02.2014
comment
Моя идея состоит в том, чтобы соединить сервер и клиент так, чтобы они не знали друг о друге. Сервер транслирует свой IP через Udp, клиент подхватывает его и устанавливает tcp-соединение с сервером. Но я могу попробовать TCP, просто для теста. Спасибо за ответ.   -  person Dante    schedule 14.02.2014


Ответы (1)


Попробуйте подключить их к одной и той же сети, например к сети Wi-Fi. Примечание: каждый раз, когда вы подключаетесь к другой сети, IP-адрес меняется.

person sam    schedule 14.02.2014