struct sockaddr_in
{
sa_family_t sin_family; //地址族
uint16_t sin_port; //16位端口号
struct in_addr sin_addr;//32位IP地址
char zero[8]; //不使用
}
struct in_addr
{
in_addr_t s_addr; //32位IP地址
}
struct sockaddr
{
sa_family_t sin_family;
char sa_data[14];
}
unsigned short htons(unsigned short); //主机字节序->网络字节序
unsigned short ntohs(unsigned short); //网络字节序列->主机字节序列
unsigned long htonl(unsigned long);
unsigned long ntohl(unsigned long);
htons() host to network short
htonl() host to network long
ntohs() network to host short
ntohl() network to host long
#include<arpa/inet.h>
in_addr_t inet_addr(const char* string);
//成功时返回32位大端序列整型数值,失败时返回INADDR_NONE
int inet_aton(const char* string, struct in_addr* addr);
#include<sys/socket.h>
int bind(int sockfd, struct sockaddr * myaddr,socklen_t addrlen);
//成功时返回一,失败时返回0
string 含有需转换的IP地址信息的字符串地址值
addr: 将保存转换结果的in_addr结构体变量的地址值
// 成功时返回true,失败时返回false
inet_addr(), inet_aton()和inet_ntoa()函数
inet_addr()函数
功能:inet_addr()函数用于将点分十进制IP地址转换成网络字节序IP地址;
原型:in_addr_t inet_addr(const char *cp)
;
返回值:如果正确执行将返回一个无符号长整数型数。如果传入的字符串不是一个合法的IP地址,将返回INADDR_NONE;
头文件:arpa/inet.h (Linux)
inet_aton()函数
功能:inet_aton()函数用于将点分十进制IP地址转换成网络字节序IP地址;
原型:int inet_aton(const char *string, struct in_addr *addr)
;
返回值:如果这个函数成功,函数的返回值非零,如果输入地址不正确则会返回零;
头文件:sys/socket.h (Linux)
inet_ntoa()函数
功能inet_ntoa()函数用于网络字节序IP转化点分十进制IP;
原型:char *inet_ntoa (struct in_addr)
;
返回值:若无错误发生,inet_ntoa()返回一个字符指针。否则的话,返回NULL。其中的数据应在下一个WINDOWS套接口调用前复制出来;
头文件:arpa/inet.h (Linux)