2016-11-15 18 views
3

問題: 特定のアドレスにudpソケットをバインドしようとしています。私はメッセージを放送します。同じソケットはメッセージを受信できる必要があります。C#UDPブロードキャストして受信する例

現在のコード:

static void Main() 
{ 
    UdpClient Configuration = new UdpClient(new IPEndPoint(IPAddress.Parse(data.IPAddress), configuration.Port)); //set up the bind to the local IP address of my choosing 
    ConfigurationServer.EnableBroadcast = true; 
    Configuration.Connect(new IPEndpoint(IPAddress.Parse(data.BroadcastIP), configuration.Port); 
    Listen(); 

} 

private void Listen() 
{ 
    Task.Run(async() => 
      { 
       while (true) 
       { 
        var remoteIp = new IPEndPoint(IPAddress.Any, configuration.Port); 
        var data = await ConfigurationServer.ReceiveAsync(); 

        // i would send based on what data i received here 
        int j = 32; 
       } 
      } 
}); 
} 

私が聞いたスレッド上でデータを受信して​​いません。私は反対側のコードが機能していることを知っていて、IP/PortコンボにUDPメッセージを送ります。

+1

として行うことができます! –

+5

この質問には意図したとおりに動作しないコードがあります(ala:意図していない機能がありません)。したがって、CRについて**トピック外**です。 – Sumurai8

答えて

4

これは単に、この質問は、コードレビューSEに最も適しているので、私は、オフトピックとして、この質問を閉じるために投票しています

int PORT = 9876; 
UdpClient udpClient = new UdpClient(); 
udpClient.Client.Bind(new IPEndPoint(IPAddress.Any, PORT)); 

var from = new IPEndPoint(0, 0); 
Task.Run(() => 
{ 
    while (true) 
    { 
     var recvBuffer = udpClient.Receive(ref from); 
     Console.WriteLine(Encoding.UTF8.GetString(recvBuffer)); 
    } 
}); 

var data = Encoding.UTF8.GetBytes("ABCD"); 
udpClient.Send(data, data.Length, "255.255.255.255", PORT); 
+1

それはそれほど簡単です。助けてくれてありがとう。 – Jason

関連する問題