在进行Linux网络编程时,经常用到本机IP地址。本文罗列一下常见方法,以备不时之需。
获取本机IP地址,是一个相当灵活的 *** 作,原因是网络地址的设置非常灵活而且都是允许用户进行个性化设置的。比如一台计算机上可以有多块物理网卡或者虚拟网卡,一个网卡上可以绑定多个IP地址,用户可以为网卡设置别名,可以重命名网卡。用户计算机所在网络拓扑结构未知,主机名设置是一个可选项,并且同样可以为一个计算机绑定多个主机名等,这些信息都会有影响。脱离了网络连接,单独的网络地址没有任何意义。编程中遇到必须获取计算机IP的场景,应该考虑将这一选项放到配置文件中,由用户自己来设置。
参考网络和书本,编程获取本机IP地址大约有以下几种方法。
方法一:ioctl()获取本地IP地址
Linux 下 可以使用ioctl()函数以及结构体 struct ifreq和结构体struct ifconf来获取网络接口的各种信息。
具体过程是先通过ictol获取本地的所有接口信息,存放到ifconf结构中,再从其中取出每个ifreq表示的ip信息(一般每个网卡对应一个IP地址,如:”eth0…、eth1…”)。
先了解结构体 struct ifreq和结构体struct ifconf:
//ifconf通常是用来保存所有接口信息的
//ifh
struct ifconf
{
int ifc_len; / size of buffer /
union
{
char ifcu_buf; /input from user->kernel/
struct ifreq ifcu_req; / return from kernel->user/
} ifc_ifcu;
};
#define ifc_buf ifc_ifcuifcu_buf /buffer address /
#define ifc_req ifc_ifcuifcu_req /array of structures/
//ifreq用来保存某个接口的信息
//ifh
struct ifreq {
char ifr_name[IFNAMSIZ];
union {
struct sockaddr ifru_addr;
struct sockaddr ifru_dstaddr;
struct sockaddr ifru_broadaddr;
short ifru_flags;
int ifru_metric;
caddr_t ifru_data;
} ifr_ifru;
};
#define ifr_addr ifr_ifruifru_addr
#define ifr_dstaddr ifr_ifruifru_dstaddr
#define ifr_broadaddr ifr_ifruifru_broadaddr
1图形界面:setup命令,然后选择network--》选择你要设置的网卡--》编辑将其类型改为dhcp--》重启网卡即可。2命令行界面:vi /etc/sysconfig/network-script/ifcfg-eth0BOOTPROTO=DHCP(一定要大写)。然后重启网卡server network restart
以上就是关于linux 下获取本地ip地址后 怎样全部的内容,包括:linux 下获取本地ip地址后 怎样、自动获取ip地址的linux系统怎么查看ip地址、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)