Как сделать так, чтобы два приложения на одном ПК общались друг с другом через UDP на одном и том же порту через Broadcast? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь создать клиент и сервер чата, которые работают на одном ПК и обмениваются данными через UDP Broadcast (или loopback) на одном и том же порту.Я могу заставить клиента чата отправлять серверу чата сообщение, но когда я пытаюсь ответить, клиент не получает ответа.

Я думаю, суть проблемы в том, что я неКак обойти VisualStudio, чтобы вы не могли запускать два слушателя в одном сокете.Я попытался обойти это, поскольку другие намекали на онлайн, слушая широковещательные сообщения на одном, и слушая IPAdress.Any на другом.Я попытался смешать IP-адреса и Loopback, но всегда кажется, что он не работает.

Сервер чата:

    int port = 10500;
    UdpClient udpClient = new UdpClient(port);
    IPEndPoint ipep = new IPEndPoint(IPAddress.Any, port);
    IPEndPoint sendipep = new IPEndPoint(IPAddress.Parse("192.168.0.255"), port);

...

//Main
   udpClient.EnableBroadcast = true;

...

//Send
    udpClient.Send(outgoingData, outgoingData.Length, sendipep);

...

//Receive

        while(true) {
            data = udpClient.Receive(ref ipep);

Клиент чата:

    private int port = 10500;
    UdpClient udpClient = new UdpClient("192.168.0.255", port);
    IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.0.255"), port);

...

//Main
    udpClient.EnableBroadcast = true;

...

//Send
    udpClient.Send(outgoingData, outgoingData.Length);

...

//Receive
    byte[] incomingData = udpClient.Receive(ref ipep);

Я ожидаю клиентаполучить входящее сообщение, но, похоже, оно никогда не получится.Спасибо за чтение!

...