本文共 1161 字,大约阅读时间需要 3 分钟。
h代表host,n代表network,s代表short,l代表long。s是16位的值(端口号),l是32位的值(IPv4地址)。
#includevoid bzero(void *dest, size_t nbytes);
#includevoid *memset(void *dest, int c, size_t len);
把目标字符串中指定数目的字节值为值c。
通常使用的IP地址表示是点分十进制表示法,而网络字节序(存放在套接字地址结构中的值)是二进制。
inet_addr函数:(此函数已废弃,应该用inet_aton函数)
类型in_addr_t在内部声明为32位整数型。
将string指向的C字符串转换为一个32位的网络字节序二进制值。并返回。
inet_aton函数:与inet_addr函数在功能上完全相同,只不过函数利用了in_addr结构体
将string指向的C字符串转换为一个32位的网络字节序二进制值。
inet_ntoa函数,将网络字节序整数IP地址转换成熟悉的字符串(点分十进制形式)
inet_pton和inet_ntop函数
p(presentation)和n(numeric)分别代表表达和数值。
#includeint inet_pton(int family, char *strptr, vpid *addrptr);const char *inet_ntop(int family, const void *addrptr, size_t len); //返回指向结果的指针
family参数可以是AF_INET或AF_INET6
inet_pton转换由strptr指针所指的字符串,并通过addrptr指针存放二进制结果。
inet_ntop进行相反的转换,从数值格式(addrptr)转换到表达格式(strptr),并返回指向结果的指针。
自行编写一个名为sock_ntop的函数,以指向某个套接字地址结构的指针为参数,查看该结构的内部,然后调用适当的函数返回该地址的表达格式。
char *sock_ntop(const struct sockadrr *sockaddr, socklen_t addrlen);
sockaddr指向一个长度为addrlen的套接字地址结构。本函数用它自己的景泰缓冲区来保存结果。而指向该缓冲区的一个指针就是它的返回值。