2016-11-15 160 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; 
       } 
      } 
}); 
} 

我没有收到监听线程数据。我知道另一端的代码是可用的,并发送一个定向的UDP消息给IP/Port组合。

+1

我投票关闭这一问题作为题外话,因为这个问题是最适合的代码审查SE可以简单地做! –

+5

此问题的特征代码不能按预期工作(ala:缺少预期功能)。因此,对于CR来说,这是** off-topic **。 – Sumurai8

回答

4

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