获得本机IP
主页 上一层 获得本机IP 对方连接本机的哪个IP? 如何使用DNS 文件流方式 读取一行语句 不定长参数 以Daemon方式运行 端口重用 用户登录及权限设置

 

本机可能会有多个IP,下面这段程序可以获得本机IP:

struct hostent *h;

char host[100];

int i;

gethostname(host, 100);

if ((h = gethostbyname(host)) == NULL) {

printf("Error : %s!\n", hstrerror(h_errno));

return;

};

printf("Default IP: %s\n", inet_ntoa (*((struct in_addr *)h->h_addr)));

for (i = 0; i< h->h_length / sizeof(int); i++) {

printf("IP %d : %s\n", i+1, inet_ntoa (*((struct in_addr *)h->h_addr_list[i])));

};

需要注意的是,h->h_addr实际上就是h->h_addr_list[0],是为了向前兼容而保留的。

DNS操作时的错误处理与普通程序不同,gethostbyname通过设置h_errno代表出错号,对应的错误函数有hstrerror()和herror(),分别对应于strerror()和perror()这两个普通的错误函数。