1、通过域名获取 IP 地址

一般客户端程序不能要求用户输入 IP 地址和 port,但是服务端程序的 IP 地址有可能变化。但是一般情况域名一旦注册可能永久不变,因此可以利用域名编写程序会更好。每次运行程序时根据域名获取 IP 地址,再接入服务器,这样程序就不会依赖于服务器 IP 地址了。

利用域名获取 IP 地址可以使用以下函数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

// Linux

#include

// 失败返回 NULL

struct hostent * gethostbyname(const char * hostname);

struct hostent {

char * h_name; // official name

char ** h_aliases; // alias list

int h_addrtype; // host address type

int h_length; // address length

char ** h_addr_list; // address list

}

// Windows

#include

struct hostent * gethostbyname(const char * name);

h_addr_list 最终指向 in_addr 结构体。

gethostbyname.c

gethostbyname_win.c

2、通过 IP 地址获取域名

1

2

3

4

5

6

7

8

9

// Linux

#include

struct hostent * gethostbyaddr(const char * addr, socklen_t len, int family);

// Windows

#include

struct hostent * gethostbyaddr(const char * addr, int len, int type);

addr 传入 in_addr 结构体指针。len 在 IPv4 时为 4,IPv6 时为 16。family 传入地址族信息。

gethostbyaddr.c

gethostbyaddr_win.c

Previous

Ubuntu 新机必备软件

Next

修改 Shell 中的 Tab 宽度为 4