当前位置: 首页 > 编程语言 > C#

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

时间:2023-04-11 02:03:00 C#

指定网络接口UDP多播在.NET中应该使用运行相同的应用程序,我们需要通过LAN线路将UDP多播发送到另一台计算机。对于C#套接字,Windows似乎每次都尝试通过WLAN适配器路由消息。有没有办法指定将UDP多播发送到哪个网络接口?您可能正在寻找SocketOptionName.MulticastInterface。MSDN上的这篇文章可能对您有所帮助。除此之外,如果您更新本地路由表以具有与多播地址匹配的确切条目并指向正确的接口,那么它应该可以正常工作。就像Nikola的附录一样:KB318911的问题是一个肮脏的把戏,用户必须提供必要的适配器索引。在查看如何检索此适配器索引时,我想到了这样一个方法:NetworkInterface[]nics=NetworkInterface.GetAllNetworkInterfaces();foreach(nics中的网络接口适配器){IPInterfacePropertiesip_properties=adapter.GetIPProperties();如果(!adapter.GetIPProperties().MulticastAddresses.Any())继续;//如果(!adapter.SupportsMulticast)继续,大多数VPN适配器将被跳过;//多播对于这种类型的连接没有意义if(OperationalStatus.Up!=adapter.OperationalStatus)continue;//此适配器已关闭或未连接IPv4InterfacePropertiesp=adapter.GetIPProperties().GetIPv4Properties();如果(null==p)继续;//此适配器上未配置IPv4//现在我们将适配器索引作为p.Index,将其放入套接字选项my_sock.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.MulticastInterface,(int)IPAddress.HostToNetworkOrder(p.Index));}完整描述http://windowsasusual.blogspot.ru/2013/01/socket-option-multicast-interface.html根据你在做什么,有一个可以提供帮助的Win32方法。它将返回给定IP地址的最佳接口。要获得默认值(0.0.0.0),这通常是您想要用于多播的,这非常简单:UInt32DestAddr,输出UInt32BestIfIndex);然后在其他地方:以上是C#学习教程:指定UDP组播在.NET中应该使用的网络接口,分享所有内容,如果对大家有用还需要详细了解C#学习教程,希望你多注意一下——//可以有多个适配器,获取默认的一个uintindex=0;GetBestInterface(0,出索引);varifaceIndex=(int)index;varclient=newUdpClient();client.Client.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.MulticastInterface,(int)IPAddress.HostToNetworkOrder(ifaceIndex));varlocalEndpoint=newIPEndPoint(IPAddress.Any,);client.Client.Bind(localEndpoint);varmulticastAddress=IPAddress.Parse("");varmultOpt=newMulticastOption(multicastAddress,ifaceIndex);client.Client.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.AddMembership,multOpt);varbroadcastEndpoint=newIPEndPoint(IPAddress.Parse(""),);byte[]缓冲区=...awa它client.SendAsync(buffer,buffer.Length,broadcastEp).ConfigureAwait(false);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢