当前位置: 技术问答>linux和unix
linux下通过多播获取本机IP地址,不成功啊?
来源: 互联网 发布时间:2016-11-11
本文导语: 发送一个多播包,接受回环包,然后获取发送包的IP地址等,这样就得到了本地的IP地址; 但是为什么在linux下不能通过这种方式获取本地IP呢? 有一次我给linux下的网卡添加了一个默认网关,就可以获取了,但是现在我添加...
发送一个多播包,接受回环包,然后获取发送包的IP地址等,这样就得到了本地的IP地址;
但是为什么在linux下不能通过这种方式获取本地IP呢?
有一次我给linux下的网卡添加了一个默认网关,就可以获取了,但是现在我添加了默认网关还是不能获取到本地IP地址,只能得到127.0.0.1;
哪位知道怎么回事呢?是需要路由吗?
|
这个问题我也碰到过,经研究,向255.255.255.255发送广播,linux似乎要求必须经过网关,如果网关不设,linux直接判255.255.255.255跟自己本机(和子网掩码)不在同一网段,产生Network unreachable错误。
所以没有网关,多播不会成功。
你可以通过ioctl()函数获得ifreq来获取本机地址。
所以没有网关,多播不会成功。
你可以通过ioctl()函数获得ifreq来获取本机地址。
|
看看网关是否设置屏蔽多播的包了
|
IP_MULTICAST_LOOP这个选项呢
|
直接ifconfig 不就看到了吗
|