网络编程中常用函数1

1、atoi()函数

#include<stdlib.h>
int atoi(const char *str)

    将字符串转化为整型数

int val;
char str[20];  
strcpy(str, "98993489");
val = atoi(str);  //此时val就是整型数98993489

2、inet_addr()、inet_aton()、inet_ntoa()

#include<arpa/inet.h>
int inet_aton(const char* strptr, struct in_addr* addrptr);   //若字符串有效返回1,否则返回0
in_addr_t inet_addr(const char* strptr);   //若字符串有效则返回32位二进制网络字节序的IPv4地址,否则返回INADDR_NONE
char* inet_ntoa(struct in_addr inaddr);    //返回指向一个点分十进制的数串指针
int inet_pton(int family, const char *strptr, void* addrptr); //若成功则返回1,若出入的不是有效表达格式返回0,若出错返回-1
const char* inet_ntop(int family, const void* addrptr, char* strptr, size_t len);//若成功则返回指向结果的指针,否则返回NULL

    inet_aton、inet_addr、inet_pton是将点分十进制数串转换为32位二进制网络字节序的IPv4地址,inet_ntoa、inet_ntop则是将IPv4地址转换为点分十进制的数串。

    INADDR_NONE为32位全1的值,所以inet_addr不能处理“255.255.255.255”这个地址,并且C编译器不同,可能此函数出错的返回值会不同(有的为-1),所以现在不建议使用此函数,而应该使用inet_aton或者支持IPv6的inet_pton函数。

    inet_pton和inet_ntop支持IPv4和IPv6,在参数family中进行指定。

3、字节序转换函数

#include<netinet/in.h>
uint16_t htons(uint16_t  host16bitvalue);
uint32_t htonl(uint32_t  host32bitvalue);
uint16_t ntohs(uint16_t  net16bitvalue);
uint32_t ntohl(uint32_t  net32bitvalue);

    h代表的host(主机字节序),n代表的net(网络字节序),s为short,l为long。

猜你喜欢

转载自blog.csdn.net/fangyan5218/article/details/80213011