c++ gethostbyname
时间: 2023-06-28 07:09:30 浏览: 112
`gethostbyname()` 函数是一个用于 DNS 查询的 C 函数,其原型如下:
```c++
struct hostent *gethostbyname(const char *name);
```
该函数接受一个主机名字符串作为参数,返回一个 `hostent` 结构体指针,该结构体包含了主机名、IP 地址等相关信息。
示例代码:
```c++
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <arpa/inet.h>
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "Usage: %s <hostname>\n", argv[0]);
exit(EXIT_FAILURE);
}
struct hostent *he;
if ((he = gethostbyname(argv[1])) == NULL) {
herror("gethostbyname");
exit(EXIT_FAILURE);
}
printf("Host name: %s\n", he->h_name);
printf("Host IP address: %s\n", inet_ntoa(*(struct in_addr *)he->h_addr_list[0]));
return 0;
}
```
该程序接受一个主机名作为命令行参数,然后调用 `gethostbyname()` 函数获取该主机的 IP 地址并输出。注意,`inet_ntoa()` 函数用于将 IP 地址从二进制转换为点分十进制表示。
阅读全文