C#的UDPClient发送组播数据不能跨交换机

noodler 2020-02-05 11:31:23
使用C#语言的UDPClient实现组播发送,设置了ttl,但数据仍然不能跨交换机。设置TTL代码如下:
public static void GetSetTtl(UdpClient u)
{
// Set the Time To Live (TTL) for this client.
u.Ttl = 42;
Console.WriteLine("Ttl value is {0}",
u.Ttl);
}
设置后调试ttl设置没问题,但抓包看数据的ttl设置仍然为1,跨交换机数据就过不去。
已排除交换机和外围环境问题,用QT写了测试程序可以跨交换机发送。
请各位大神看看是UDPClient类有什么缺陷吗?
我用的是VS2010.
...全文
484 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
github_36000833 2020-02-06
  • 打赏
  • 举报
回复
如果你担心TTL,可以设置MulticastTimeToLive(不是IpTimeToLive): u.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 32); 你还要确认客户加入了多播组。客户利用IGMP协议通知客户网关转发组播,网关和网关之间也可以通过IGMP或PIM来交流播组关系。 最终IGMP或PIM需要抵达你服务器的网关。
noodler 2020-02-06
  • 打赏
  • 举报
回复
果然设置MulticastTimeToLive好使,多谢了。怎么把积分转给你,还不太会操作。

引用 1 楼 github_36000833 的回复:
如果你担心TTL,可以设置MulticastTimeToLive(不是IpTimeToLive):
u.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 32);

你还要确认客户加入了多播组。客户利用IGMP协议通知客户网关转发组播,网关和网关之间也可以通过IGMP或PIM来交流播组关系。
最终IGMP或PIM需要抵达你服务器的网关。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧