2015-05-07 20 views
0

我正在開發一個Windows通用應用程序。我可以通過網絡將UDP數據包發送到使用我擁有的代碼的特定主機。我可以看到UDP數據包被髮送到我使用Wireshark指定的特定主機名。如何在Windows通用應用程序中廣播UDP數據包

我想向我的網絡上的所有節點廣播一條消息。

這裏是我有什麼,這隻能發送一個數據包到特定的主機,其工作原理:

class NetworkInterface 
    { 
     private DatagramSocket _socket; 

     public NetworkInterface() 
     { 
      _socket = new DatagramSocket(); 
     } 

     public async void Connect(HostName remoteHostName, string remoteServiceNameOrPort) 
     { 
      await _socket.ConnectAsync(remoteHostName, remoteServiceNameOrPort); 
     } 

     public async void SendMessage(string message) 
     { 
      var stream = _socket.OutputStream; 

      var writer = new DataWriter(stream); 

      writer.WriteString(message); 

      await writer.StoreAsync(); 
     } 
    } 

    NetworkInterface ni = new NetworkInterface(); 

    private void ConnectButton_Click(object sender, RoutedEventArgs e) 
    { 
     Debug.WriteLine("Clicked!"); 
     ni.Connect(new HostName("192.168.120.51"), "5321"); 
     string cmd = "Hello there\r"; 

     ni.SendMessage(cmd); 
    } 

該發送你好消息給主機。

我是Windows通用應用程序和框架的新手。此外,我無法通過網絡找到任何特定的文檔。請幫忙。

+0

_「我無法通過Web找到任何特定文檔」_ - 您找到了哪些文檔_did_?您是否研究過如何一般使用UDP進行廣播?你是否將這些通用技術應用於'DatagramSocket'?如果是這樣,發生了什麼,與你想要發生的事情有什麼不同?如果不是,你爲什麼不呢?如上所述,這個問題對Stack Overflow而言過於寬泛;你需要做足夠的工作來達到你有一個比這更具體的問題的地步。 –

回答

2

而不是連接到一個特定的主機名,你應該調整你的代碼,只調用GetOutputStreamAsync,傳遞廣播地址爲255.255.255.255的主機名,然後寫入結果流。這應該讓你通過網絡廣播你的數據報包。