如何获得本机IP地址?
请指教!谢谢 问题点数:20、回复次数:8Top
1 楼chink(叮当)回复于 2002-10-27 01:07:35 得分 0
输入ifconfigTop
2 楼AndersLuo()回复于 2002-10-27 17:12:25 得分 0
以root登录,在shell下用命令ifconfigTop
3 楼seashoreboy(海滨)回复于 2002-10-28 08:28:31 得分 0
sorry,我没把问题说清楚,我是想用编程来得到。也就是说,我程序里需要知道本机IP地址。Top
4 楼wolfman(浪人)回复于 2002-10-28 09:15:15 得分 0
gethostnameTop
5 楼seashoreboy(海滨)回复于 2002-10-28 13:53:06 得分 0
那是获得主机名啊。Top
6 楼mengge(踏岸寻柳)回复于 2002-10-29 09:29:55 得分 0
First: gethostname
Second: gethostbynameTop
7 楼icesg()回复于 2002-10-30 08:48:59 得分 0
example:
PHOSTENT phe;
phe=gethostbyname("localhost");
phe->h_addr is your host IP
Top
8 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2002-10-30 11:59:33 得分 20
#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;
}
Top




