The simplest possible advertising / listening through sockets

What happened to the following simple diagram. All I do is create a UDP advertiser that is multicast for the message, and a listener that joins the multicast group to receive this message, running on the same computer.

string Port = "54153";
HostName Host = new HostName("224.3.0.5"); //a multicast range address

//listener
var L = new DatagramSocket();
L.MessageReceived += (sender2, args) => { /*something*/ };
await L.BindServiceNameAsync(Port);
L.JoinMulticastGroup(Host);

//advertiser
var AdvertiserSocket = new DatagramSocket();
AdvertiserSocket.Control.MulticastOnly = true;

Stream outStream = (await AdvertiserSocket.GetOutputStreamAsync(Host, Port)).AsStreamForWrite();
using (var writer = new StreamWriter(outStream))
{
  await writer.WriteLineAsync("MESSAGE");
  await writer.FlushAsync();
}

The listener does not receive anything ( MessageReceivednever called). I tried the following options without success:

  • Calling and not calling BindServiceNameAsync () for the advertiser.
  • Use MulticastOnlyfor advertiser, listener, or both
  • Waiting a few seconds after creating one object in front of another.
  • Use 255.255.255.255as a host.
+1
1

, (TCPView ), .

, . . , - , .

, :

private async void btnListen_Click(object sender, RoutedEventArgs e)
{
        socket = new DatagramSocket();
        socket.MessageReceived += Socket_MessageReceived;
        socket.Control.MulticastOnly = true;
        await socket.BindServiceNameAsync(serverPort);
        socket.JoinMulticastGroup(serverHost);
        SendWithExistingSocket(socket, "");//send an empty message immediately
}

private async void SendWithExistingSocket(DatagramSocket socket, String text)
{
    if (socket != null)
    {
        Stream stream = (await socket.GetOutputStreamAsync(serverHost, serverPort)).AsStreamForWrite();
        using (var writer = new StreamWriter(stream))
        {
            writer.WriteLine(text);
            await writer.FlushAsync();
        }
    }
}

, , .

+3

Source: https://habr.com/ru/post/1655803/


All Articles