博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取服务器ip地址
阅读量:5213 次
发布时间:2019-06-14

本文共 1152 字,大约阅读时间需要 3 分钟。

 
#include
<
stdio.h
>
#include
<
sys
/
types.h
>
#include
<
sys
/
socket.h
>
#include
<
sys
/
ioctl.h
>
#include
<
netinet
/
in
.h
>
#include
<
net
/
if
.h
>
#include
<
net
/
if_arp.h
>
#include
<
arpa
/
inet.h
>
#include
<
errno.h
>
#include
<
string
.h
>
#define
ETH_NAME "eth1"
int
main()
{
int
sock;
struct
sockaddr_in sin;
struct
ifreq ifr;
sock
=
socket(AF_INET, SOCK_DGRAM,
0
);
if
(sock
==
-
1
)
{
perror(
"
socket
"
);
return
-
1
;
}
strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ
-
1
]
=
0
;
if
(ioctl(sock, SIOCGIFADDR,
&
ifr)
<
0
)
{
perror(
"
ioctl
"
);
return
-
1
;
}
memcpy(
&
sin,
&
ifr.ifr_addr,
sizeof
(sin));
fprintf(stdout,
"
eth0: %s\n
"
, inet_ntoa(sin.sin_addr));
return
0
;
}
上述代码有个毛病,只能获取一张网卡的ip地址。哎呀哎呀,真的很难得获得所有网卡的ip地址
不知道怎么获取。
下述代码就无敌了。什么都可以获取。
 
#include
<
stdio.h
>
#include
<
unistd.h
>
#include
<
iostream
>
using
namespace
std;
int
main()
{
FILE
*
fp
=
popen(
"
/sbin/ifconfig -a | grep -v inet6 | awk '/inet/{print $2}' | awk -F: '{print $2}'
"
,
"
r
"
);
char
str[
1024
];
fread(str,
sizeof
(str),
1
,fp);
cout
<<
str;
pclose(fp);
}
~

转载于:https://www.cnblogs.com/xloogson/archive/2011/07/04/2097363.html

你可能感兴趣的文章
启动tomcat时cmd窗口一闪而过
查看>>
两个有序数列,求中间值 Median of Two Sorted Arrays
查看>>
vue路由的实现原理
查看>>
Java核心技术:Java异常处理
查看>>
Python 学习笔记一
查看>>
引入列表,将对话分类添加到对应列表中
查看>>
回文子串
查看>>
Count Numbers
查看>>
React——JSX
查看>>
编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
查看>>
最大公约数求解
查看>>
网卡bond技术
查看>>
UITabbarController的UITabbarItem(例:"我的")点击时,判断是否登录
查看>>
机器学习之支持向量机(一):支持向量机的公式推导
查看>>
对【SQL SERVER 分布式事务解决方案】的心得补充
查看>>
UNIX基础知识之输入和输出
查看>>
Diango路由映射FBV和CBV
查看>>
Android Studio配置指南总结
查看>>
【洛谷 P1666】 前缀单词 (Trie)
查看>>
python之装饰器
查看>>