2012-09-17 33 views
3

嗨,大家好,我正在開發一個應用程序,其中廣播是必不可少的。我創建了兩個項目Client和Server。我能夠發送廣播消息,但我沒有收到服務器項目。我的代碼如下UDP廣播不能在Windows 8的同一臺機器上工作

服務器

private DatagramSocket _udpSocket = new DatagramSocket(); 
    private async void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     _udpSocket.MessageReceived += _udpSocket_MessageReceived; 

     await _udpSocket.BindServiceNameAsync("4777");      
    } 

    void _udpSocket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args) 
    { 

    } 

客戶

 HostName h = new HostName("255.255.255.255"); 
     IOutputStream outStream = await _socket.GetOutputStreamAsync(h, "4777"); 

     DataWriter de = new DataWriter(outStream); 
     de.WriteByte(new byte()); 
     await de.StoreAsync(); 
     de.DetachBuffer(); 

但如果客戶端我用本地ip地址替換255.255.255.255,我能收到服務器的消息。

任何猜測什麼是問題?

+0

是服務器在同一個網絡/子網客戶端PC? – TimVK

+0

服務器在同一個網絡上,服務器和客戶端都在同一臺PC上運行 – nucleons

+0

防火牆是否阻塞了端口?你檢查過了嗎?或者你甚至可以用255.255.255.255代替廣播地址您的網絡本身 – TimVK

回答

1

如果我記得我的網絡101類,當你做廣播時,數據包不會發回給你,只能發送給網絡上的所有其他計算機(我可能是錯誤的)。此外,像TimVK在他的評論中說,你應該嘗試使用你的網絡的廣播地址,而不是普通廣播(對於網絡192.168.0.0/24(掩碼255.255.255.0)廣播將是192.168.0.255