Tag: 组播

在XP上使用Multicast的C#SocketException

以下C#代码在Vista上正常工作,但在XP上失败: SocketException:提供了无效的参数。 ErrorCode是10022。 XP上的防火墙已被禁用。 using System; using System.Net; using System.Net.Sockets; public class SocketTest { [STAThread] public static void Main() { MySocket s = new MySocket(); Console.WriteLine(“done”); Console.ReadLine(); } public class MySocket : Socket { public const ushort SocketTtl = 4; public const string Address = “239.255.255.250”; public IPAddress IPAddress = IPAddress.Parse(Address); public MySocket() : base(AddressFamily.InterNetwork, […]

在.NET中指定UDP多播应该使用的网络接口

在具有活动无线卡和LAN端口的计算机上,交叉电缆连接到运行相同应用程序的另一台计算机,我们需要通过LAN线将UDP多播发送到另一台计算机。 使用C#套接字,Windows似乎每次尝试通过WLAN适配器路由消息。 有没有办法指定发送UDP多播的网络接口?

如何在C#(IGMPv3)中加入源特定组播组

我们有一个C#应用程序,可以加入和接收来自多播组的数据。 这很好用。 我们现在想要支持IGMPv3并且能够在加入多播组时指定源的IP。 从MSDN文档中,我看不到如何执行此操作。 我发现以下链接似乎回答了我的问题。 http://social.msdn.microsoft.com/Forums/en/netfxnetcom/thread/e8063f6d-22f5-445e-a00c-bf46b46c1561 这是我如何实现这个: byte[] membershipAddresses = new byte[12]; // 3 IPs * 4 bytes (IPv4) Buffer.BlockCopy(multicastIp.GetAddressBytes(), 0, membershipAddresses, 0, 4); Buffer.BlockCopy(sourceIp.GetAddressBytes(), 0, membershipAddresses, 4, 4); Buffer.BlockCopy(localIp.GetAddressBytes(), 0, membershipAddresses, 8, 4); socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, membershipAddresses); 但是在使用此错误调用SetSocketOption()时出现SocketException: The requested address is not valid in its context 。 有人能指出我在这里做错了吗? 谢谢!

在.NET应用程序中需要微秒延迟来限制UDP多播传输速率

我正在C#中编写UDP多播客户端/服务器对,我需要50-100μsec(微秒)的延迟来限制服务器传输速率。 这有助于避免重大数据包丢失,还有助于防止磁盘I / O绑定的客户端过载。 请不要建议Thread.Sleep或Thread.SpinWait。 我不会问我是否需要其中任何一个。 我的第一个想法是使用某种高性能的计数器并做一个简单的while()循环来检查已用时间,但我想避免这种情况,因为它感觉很笨拙。 那不会也会占用服务器进程的CPU利用率吗? 跨平台解决方案的奖励积分,即不是Windows特定的。 先谢谢你,伙计们!