社区
Solaris
帖子详情
请问,C语言socket编程中,客户端如何得到自己的IP?不要0.0.0.0
ymy1248227142
2012-04-19 10:08:13
因为客户端没有bind,所想要要一个函数在本地来得到客户端自己的IP,getsocketname返回的是0.0.0.0,我不要这个IP,请问有什么好的办法吗?
...全文
480
8
打赏
收藏
请问,C语言socket编程中,客户端如何得到自己的IP?不要0.0.0.0
因为客户端没有bind,所想要要一个函数在本地来得到客户端自己的IP,getsocketname返回的是0.0.0.0,我不要这个IP,请问有什么好的办法吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ymy1248227142
2012-04-28
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
引用 5 楼 的回复:
引用 4 楼 的回复:
引用 2 楼 的回复:
试试这个函数:
struct ifreq ifr;
strcpy(ifr.ifr_name, "eth0");
ioctl(sock_fd, SIOCGIFADDR, &ifr);
要是它有多个IP呢?不一定就是eth0啊。。。
那就多次吧
读取/proc/n……
[/Quote]哦,谢谢
qq120848369
2012-04-19
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
引用 4 楼 的回复:
引用 2 楼 的回复:
试试这个函数:
struct ifreq ifr;
strcpy(ifr.ifr_name, "eth0");
ioctl(sock_fd, SIOCGIFADDR, &ifr);
要是它有多个IP呢?不一定就是eth0啊。。。
那就多次吧
读取/proc/net/dev可以看到有几个网卡
[/Quote]
恩,ioctl提供了相应的选项,应该是GET CONF选项,可以得到所有网卡的名字,然后使用你那个ADDR的参数就能获得IP了。
qq120848369
2012-04-19
打赏
举报
回复
不是getsockname吗,必须先发出一条消息,内核才会帮你随机绑定一个IP+PORT。
其他办法是没有的,如果想获得机器上的所有网卡,使用ioctl,参考《UNIX环境高级编程》
昵称很不好取
2012-04-19
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
引用 2 楼 的回复:
试试这个函数:
struct ifreq ifr;
strcpy(ifr.ifr_name, "eth0");
ioctl(sock_fd, SIOCGIFADDR, &ifr);
要是它有多个IP呢?不一定就是eth0啊。。。
[/Quote]
那就多次吧
读取/proc/net/dev可以看到有几个网卡
ymy1248227142
2012-04-19
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
试试这个函数:
struct ifreq ifr;
strcpy(ifr.ifr_name, "eth0");
ioctl(sock_fd, SIOCGIFADDR, &ifr);
[/Quote]要是它有多个IP呢?不一定就是eth0啊。。。
昵称很不好取
2012-04-19
打赏
举报
回复
ifr里面就应该有ip地址了
昵称很不好取
2012-04-19
打赏
举报
回复
试试这个函数:
struct ifreq ifr;
strcpy(ifr.ifr_name, "eth0");
ioctl(sock_fd, SIOCGIFADDR, &ifr);
ymy1248227142
2012-04-19
打赏
举报
回复
用的UDP
0.0
.
0.0
是什么
IP
,
0.0
.
0.0
是什么意思
创建socket开端口时要指定
IP
,这个大家都会 要么是127.
0.0
.1要么是公网
IP
但是
0.0
.
0.0
是什么
IP
? 他可是个一举两得的好东西
c编写的R
IP
协议源程序
// init local socket address and
ip
address GetLocal
IP
(); // init route table items for(i = 0; i ; i++) { SetRouteEntry(&routeTable[i].routeInfo,"
0.0
.
0.0
",0,0); routeTable[i].isvalid = 0;...
Socket编程
系列之1:Linux-API网络编程入门实战
网络编程入门实战----------------------------------------------------
Socket编程
系列之1:Linux-API网络编程入门实战 Linux编程环境 Linux文件系统 TCP/
IP
协议简介 应用层协议简介 TCP网络编程基础 IO复用机制 ...
W5500
客户端
控制点亮一个LED(小开发板)一秒发生异常状态20秒无接收重启.rar
stm32+W5500
客户端
控制点亮一个LED(小开发板)一秒发生异常状态20秒无接收重启
本机
ip
地址socket
c语言
,socket获取服务器本机
IP
的有关问题
现在服务器上有多个网卡,
客户端
会连接其
中
的任何一个网卡,现在想在服务端accpet时知道
客户端
是通过服务器的哪个网卡(或者
IP
)连接进来的?使用了getsockname函数,但是获取出来的
ip
是
0.0
.
0.0
,不知道还有其它方法...
Solaris
1,543
社区成员
2,062
社区内容
发帖
与我相关
我的任务
Solaris
Linux/Unix社区 Solaris
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 Solaris
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章