社区
Linux/Unix社区
帖子详情
linux下通过多播获取本机IP地址,不成功啊?
wesleyluo
2011-03-01 10:43:29
发送一个多播包,接受回环包,然后获取发送包的IP地址等,这样就得到了本地的IP地址;
但是为什么在linux下不能通过这种方式获取本地IP呢?
有一次我给linux下的网卡添加了一个默认网关,就可以获取了,但是现在我添加了默认网关还是不能获取到本地IP地址,只能得到127.0.0.1;
哪位知道怎么回事呢?是需要路由吗?
...全文
181
8
打赏
收藏
linux下通过多播获取本机IP地址,不成功啊?
发送一个多播包,接受回环包,然后获取发送包的IP地址等,这样就得到了本地的IP地址; 但是为什么在linux下不能通过这种方式获取本地IP呢? 有一次我给linux下的网卡添加了一个默认网关,就可以获取了,但是现在我添加了默认网关还是不能获取到本地IP地址,只能得到127.0.0.1; 哪位知道怎么回事呢?是需要路由吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
haixuelang
2011-03-03
打赏
举报
回复
wesleyluo
2011-03-02
打赏
举报
回复
我调试了下代码:
发现:
1.如果不添加网关,在执行setsockopt(IP_ADD_MEMBERSHIP)这个函数时报错;
提示:No such Device;
2.如果加了网关,在本地等待多播包回送的过程中超时,也就是一直都接收不到刚才发出的多播包了.
大家说说怎么回事呢?
wesleyluo
2011-03-02
打赏
举报
回复
[Quote=引用 3 楼 zjw6861982 的回复:]
这个问题我也碰到过,经研究,向255.255.255.255发送广播,linux似乎要求必须经过网关,如果网关不设,linux直接判255.255.255.255跟自己本机(和子网掩码)不在同一网段,产生Network unreachable错误。
所以没有网关,多播不会成功。
你可以通过ioctl()函数获得ifreq来获取本机地址。
[/Quote]
我同意你的看法,可奇怪的是,我现在添加了网关,本地怎么也收不到自己发出的多播包了,前段时间成功过一次,现在不行了,难道是路由网关坏了???
zjw6861982
2011-03-02
打赏
举报
回复
这个问题我也碰到过,经研究,向255.255.255.255发送广播,linux似乎要求必须经过网关,如果网关不设,linux直接判255.255.255.255跟自己本机(和子网掩码)不在同一网段,产生Network unreachable错误。
所以没有网关,多播不会成功。
你可以通过ioctl()函数获得ifreq来获取本机地址。
wesleyluo
2011-03-02
打赏
举报
回复
我就是要通过多播的方式获取啊.ifconfig实现不一样.
zjw6861982
2011-03-02
打赏
举报
回复
IP_MULTICAST_LOOP这个选项呢
playmud
2011-03-02
打赏
举报
回复
看看网关是否设置屏蔽多播的包了
wangtingguang
2011-03-01
打赏
举报
回复
直接ifconfig 不就看到了吗
在
linux
下c语言
获取
本机
ip地址
源代码
getip.c - 在
linux
下c语言
获取
本机
ip地址
源代码 rhel5.4-i386 bash-3.2-24.el5.src.rpm http://oss.oracle.com/el5/SRPMS-updates/ 订阅 struct ifconf这个结构是在哪个头文件定义 #...
linux
下c语言
获取
本机
ip地址
linux
下c语言
获取
本机
ip地址
struct ifconf这个结构是在哪个头文件定义 #include 其实你可以 find /usr/include/ -name "*.h" -exec grep -l "ifconf" {} \; ( grep -l或--file-with-matches ...
虚拟机
Linux
IP地址
更改
虚拟机
Linux
IP地址
C++ 通过UDP广播
获取
网络中所有设备
ip地址
源码使用说明,先在需要
获取
IP地址
的主机上运行server端程序,然后在需要搜索主机的Pc上运行client端程序 本文是windows版,VC++,在VS2010环境下调试
成功
。有时候需要搜索网络中的设备,机器,服务器等,这就要要...
linux
编程
获取
本机
IP地址
+ socket相关系统调用的调用流程
通过google,编程
获取
IP地址
大约有以下三种思路: 1. 通过gethostname()和gethostbyname() #include #include #include #include #include #include int main() { char hname[128]; struct ...
Linux/Unix社区
23,121
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章