阅读:1651回复:11
怎样在核里可以取到本机的IP地址?
谢谢!
|
|
沙发#
发布于:2003-06-10 13:18
据我所知, 找不到。
|
|
|
板凳#
发布于:2003-06-10 15:18
我觉得,肯定可以找到.ifconfig都可以找到.它通过ioctl得到的.
|
|
地板#
发布于:2003-06-11 00:21
肯定可以的 在一个数据结构里 具体哪里偶现在手边没有书 记不起来了
|
|
地下室#
发布于:2003-06-11 17:34
ifconfig eth0不就可以看到了。
内核里指定,那就在/etc/rc中了 |
|
5楼#
发布于:2003-06-20 09:37
/etc/rc里找不到,有人告诉我在/etc/hosts里也找不到!到底在哪?继续!
|
|
6楼#
发布于:2003-06-20 11:22
我在核里通过设备接口表中可以找到.设备接口表里面有一个ifa_local字段,表示本机的ip地址.
|
|
7楼#
发布于:2003-06-20 16:19
内核和本机的IP地址完全是两个不相干的东西,可以想一下,如果我安装了Linux的时候并没有安装内核,那地址在什么地方呢?我的网络还不是一样可以用?
内核在没有编译之前,完全是Source Code,它不可能知道你在安装Linux后对系统所做的配置,当然也就不可能知道你的IP地址。 如果哪位真的可以作到的话,麻烦你告诉我一下。 |
|
|
8楼#
发布于:2003-06-20 16:23
我想这个问题问的有毛病,大概这个问题的本意是说调用什么内核函数可以得到本机的IP地址?
|
|
|
9楼#
发布于:2003-06-20 16:41
我问的问题不是通过调用ioctl去找ip地址.修改网络协议/net下的函数,这个协议是在内核里的实现的.
|
|
10楼#
发布于:2003-06-21 11:23
ifconfig eth0
|
|
11楼#
发布于:2003-06-25 15:08
/*M*
// test by paopaoer // gcc -c hostip.c -I/usr/src/linux/include *M*/ #define MODULE #define __KERNEL__ #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/netdevice.h> #include <linux/inetdevice.h> char *in_ntoa(__u32 in) { static char buff[18]; char *p; p=(char *)∈ sprintf(buff, \"%d.%d.%d.%d\", (p[0]&0xff),(p[1]&0xff),(p[2]&0xff), (p[3] &0xff)); return (buff); } static int ShowIp() { struct socket *sock; struct net_device *dev; struct in_device *in_dev; struct in_ifaddr *ifa=NULL; int error = 0; for( dev = dev_base; dev != NULL; dev = dev->next ) { in_dev = __in_dev_get(dev); ifa = in_dev->ifa_list; printk(\"ifa->ifa_local = %s\\n\", in_ntoa(ifa->ifa_local) ); printk(\"ifa->ifa_address = %s\\n\", in_ntoa(ifa->ifa_address) ); } return 0; } static int init_module(void) { ShowIp(); return 0; } static void cleanup_module(void) { } MODULE_LICENSE(\"GPL\"); |
|
|