Sebastian
Sebastian

Reputation: 133

Can't receive Broadcasts in WinRT

I'm trying to receive a broadcast via DatagramSockets in WinRT/C#, but I just don't receive a packet.

To be more specific, this is my code:

public sealed partial class MainPage : Page
 {
    public MainPage(){
        this.InitializeComponent();
    }

    private DatagramSocket listener;

    async private void  Loaded(object sender, RoutedEventArgs e) {
        listener = new DatagramSocket();
        listener.MessageReceived += MessageReceived;
        await listener.BindServiceNameAsync("50011");
    }

    private void MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args) {
        txtText.Text = "Win :D:D:D:D:D:D:D"; //Breakpoint here
    }
}

The program never reaches the breakpoint. I've set all the correct rights/permissions in the appxmanifest. The program which sends the broadcast is the following one:

static void Main(string[] args) {
        Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
        IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 50011);

        string hostname = Dns.GetHostName();
        byte[] data = new byte[1];
        data[0] = 129;
        while (true) {
            sock.SendTo(data, iep);
            Console.WriteLine("Daten gesendet: {0}", data[0]);
            Thread.Sleep(1000);
        }
    }

I know this program works, because I tested it with another little C# programm on the same PC (but not with WinRT functionality, just normal C#). Also it can't be a Firewall- or Routing Problem, because it, as I just mentioned, already worked with a normal C# program (but I already tried turning the firewall off).

I'm currently trying it on a Wifi-Network using Windows 8.1 and have x64 Processor. Am I missing something? Is it even possible?

I hope somebody of you can help me

(PS: I know it's pretty similar to this post: Can't Receive UDP Windows RT but there hasen't been progress for more than a year so ...)

Upvotes: 1

Views: 511

Answers (1)

Sebastian
Sebastian

Reputation: 133

I solved it. You just have to send the broadcasts from a different device. However it doesn't like broadcasts sent from the same device ....

Upvotes: 2

Related Questions