|
|
用下面的函数可以直接找到你的ip地址
[code:1:4b9fddf037]#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>
#define ETH_NAME "eth0"
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;
}[/code:1:4b9fddf037]
| yinmin 回复于:2003-03-20 20:56:48
| SIOCGIFADDR是什么意思?
我在帮助里查不到。
谢过先。 
| | 罗格纳 回复于:2003-03-21 08:46:32
| 楼主的假设不成立,因为当主机是多接口时,上述程序只能返回一个IP,还是用netstat
| | gadfly 回复于:2003-03-21 11:49:16
| 这个可以
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=12&topic=3303
| | 雪花啤酒 回复于:2003-09-23 13:11:19
| 谢谢!
不过我还是学生,不是那个CRC。
您懂的真多!好羡慕!有空教教我好吗?(妄想)
哈,谢谢!
虽然我仍然迷茫,
但是
可幸的是
有人和我同在
荒漠(我的)
里
走!
非常感激天!
| |
|