我尝试使用两个单独的程序从同一台计算机发送和接收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中的代码,但仍然没有成功。
答案 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);