1.字节排序函数:
#include<netinet/in.h>
unit16_t htons(unit16_t host16bitvalue); 如TCP或UDP端口号
unit32_t htonl(unit32_t host32bitvalue); 如IPv4地址
均返回:网络字节序的值
unit16_t ntohs(unit16_t net16bitvalue);
unit32_t ntohl(unit32_t net32bitvalue);
均返回:主机字节序的值
2.字节操纵函数:
#include<strings.h>
void bzero(void *dest, size_t nbytes);
功能:把目标字符串指定数目的字节置为0;
void bcopy(const void *src, void *dest, size_t nbytes);
功能:将指定数目的字节从源字节串复制到目标字符串;
int bcmp(const void *ptr1, const void *ptr2, size_t nbytes);
返回:若相等则为0,否则为非0
功能:比较连个任意字符串;
#include<string.h>
void *memset(void *dest,int c, size_t len);
功能:把目标字符串指定数目的字节置为c值;
void *memcpy(void *dest, const void *src, size_t nbytes);
功能:类似bcopy,当源字节串与目标字节串重叠时,bcopy能正确处理,但是memcpy的操作结果却不可知;
int memcmp(const void *ptr1, const void *ptr2, size_t nbytes);
返回:若相等则为0,否则为<0或>0
功能:比较两个任意的字节串,如果ptr1>ptr2则返回>0,反之<0,若相等返回0;
3.地址转换函数:
#include<arpa/inet.h>
int inet_aton(const char *strptr, struct in_addr *addrptr);
返回:若字符串有效则为1,否则为0
功能:将strptr指向的字符串转换成一个32位字节序二进制值,并通过指针addrptr来存储;
in_addr_t inet_addr(const char *strptr);
返回:若字符串有效则为32位二进制网络字节序的IPv4地址,否则为INADDR_NONE(通常是一个32位均为1的值)
功能:进行相同的转换,返回值为32位的网络字节序二进制值,255.255.255.255不能由该函数处理;
char *inet_ntoa(struct in_addr inaddr);
返回:指向一个点分十进制数串的指针
功能:将一个32位的网络字节序二进制IPv4地址转换成相应的点分十进制数串;
int inet_pton(int family, const char *strptr, void *addrptr);
返回:若成功则返回1,若输入不是有效的表达式格式则为0,若出错则为-1
功能:转换由strptr指针所指的字符串,并通过addrptr指针存放二进制结果。
const char *inet_ntop(int family, const void* addrptr, char *strptr, size_t len);
返回:若成功则为指向结果的指针,若出错则为NULL
功能:从数值格式转换到表达式格式。
inet_pton和inet_ntop函数对于IPv4和IPv6都适用,上面4个函数仅适用于IPv4.
#include<netinet/in.h>
unit16_t htons(unit16_t host16bitvalue); 如TCP或UDP端口号
unit32_t htonl(unit32_t host32bitvalue); 如IPv4地址
均返回:网络字节序的值
unit16_t ntohs(unit16_t net16bitvalue);
unit32_t ntohl(unit32_t net32bitvalue);
均返回:主机字节序的值
2.字节操纵函数:
#include<strings.h>
void bzero(void *dest, size_t nbytes);
功能:把目标字符串指定数目的字节置为0;
void bcopy(const void *src, void *dest, size_t nbytes);
功能:将指定数目的字节从源字节串复制到目标字符串;
int bcmp(const void *ptr1, const void *ptr2, size_t nbytes);
返回:若相等则为0,否则为非0
功能:比较连个任意字符串;
#include<string.h>
void *memset(void *dest,int c, size_t len);
功能:把目标字符串指定数目的字节置为c值;
void *memcpy(void *dest, const void *src, size_t nbytes);
功能:类似bcopy,当源字节串与目标字节串重叠时,bcopy能正确处理,但是memcpy的操作结果却不可知;
int memcmp(const void *ptr1, const void *ptr2, size_t nbytes);
返回:若相等则为0,否则为<0或>0
功能:比较两个任意的字节串,如果ptr1>ptr2则返回>0,反之<0,若相等返回0;
3.地址转换函数:
#include<arpa/inet.h>
int inet_aton(const char *strptr, struct in_addr *addrptr);
返回:若字符串有效则为1,否则为0
功能:将strptr指向的字符串转换成一个32位字节序二进制值,并通过指针addrptr来存储;
in_addr_t inet_addr(const char *strptr);
返回:若字符串有效则为32位二进制网络字节序的IPv4地址,否则为INADDR_NONE(通常是一个32位均为1的值)
功能:进行相同的转换,返回值为32位的网络字节序二进制值,255.255.255.255不能由该函数处理;
char *inet_ntoa(struct in_addr inaddr);
返回:指向一个点分十进制数串的指针
功能:将一个32位的网络字节序二进制IPv4地址转换成相应的点分十进制数串;
int inet_pton(int family, const char *strptr, void *addrptr);
返回:若成功则返回1,若输入不是有效的表达式格式则为0,若出错则为-1
功能:转换由strptr指针所指的字符串,并通过addrptr指针存放二进制结果。
const char *inet_ntop(int family, const void* addrptr, char *strptr, size_t len);
返回:若成功则为指向结果的指针,若出错则为NULL
功能:从数值格式转换到表达式格式。
inet_pton和inet_ntop函数对于IPv4和IPv6都适用,上面4个函数仅适用于IPv4.