无法接收UDP数据包

时间:2016-07-24 18:05:29

标签: c# .net networking udp

我尝试使用两个单独的程序从同一台计算机发送和接收UDP数据包,但到目前为止我还没有收到任何内容。我试图完全关闭我的防火墙,但仍然没有工作。

发送程序

var sender = new UdpClient(Dns.GetHostName(), 2055);

var data = new byte[] { 0, 1, 2, 3, 4, 5 };
sender.Send(data, data.Length);

接收程序

var receiver = new UdpClient(2055);

var endPoint = new IPEndPoint(IPAddress.Any, 2055);
var data = receiver.Receive(ref endPoint);
System.Console.WriteLine("Data received");

我甚至复制并粘贴了本教程http://www.codeproject.com/Articles/10649/An-Introduction-to-Socket-Programming-in-NET-using中的代码,但仍然没有成功。

2 个答案:

答案 0 :(得分:0)

来自About multicast IP addresses and ports (TechNet)

  

多播IP地址是D类地址,分为两个范围:224.0.0.0到239.255.255.255 和FF00:0000:0000:0000:0000:0000:0000:0000到FFFF: FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF。第一个范围中的地址是Internet协议版本4(IPv4)地址。第二个范围中的地址是Internet协议版本6(IPv6)地址。

     

对于Intranet使用,建议您使用范围为239. 。*的IPv4地址。端口号可以在1到65535之间。网络上用于传输内容的路由器必须启用多播,这意味着它们必须能够解释D类地址,否则它们将无法转发您的多播信息给客户。

由于网络级过滤,您必须使用此范围内的IP地址。维基百科上有一张commonly-used multicast addresses表。

实际上,您正在使用的教程也注意到了这一点:

  UDP还支持多播,即将单个数据报发送到多个接收器。为此,发送方将数据包发送到224.0.0.1 - 239.255.255.255(D类地址组)范围内的IP地址。

答案 1 :(得分:0)

问题出在var sender = new UdpClient(Dns.GetHostName(), 2055);

您需要指定本地主机IP 127.0.0.1,因为您在同一台计算机上。这应该有效:

var sender = new UdpClient("127.0.0.1", 2055);