获取本地IP

本机可能会有多个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()这两个普通的错误函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值