sockaddr_in详解

来源:互联网 发布:sql批量修改字段值 编辑:程序博客网 时间:2024/04/30 21:21
struct sockaddr_in {    short sin_family;/*Address family一般来说AF_INET(地址族)PF_INET(协议族)*/    unsigned short sin_port;/*Port number(必须要采用网络数据格式,普通数字可以用htons()函数转换成网络数据格式的数字)*/    struct in_addr sin_addr;/*IP address in network byte order(Internet address)*/    unsigned char sin_zero[8];/*Same size as struct sockaddr没有实际意义,只是为了 跟SOCKADDR结构在内存中对齐*/ };

其中,结构体in_addr 用来表示一个32位的IPv4地址.
in_addr_t 一般为 32位的unsigned int,其字节顺序为网络顺序(network byte ordered),即该无符号整数采用大端字节序[1]  。.
其中每8位代表一个IP地址位中的一个数值.


例如192.168.3.144记为0x9003a8c0,其中 c0 为192 ,a8 为 168, 03 为 3 , 90 为 144
打印的时候可以调用inet_ntoa()函数将其转换为char *类型.

struct in_addr {    in_addr_t s_addr;};

使用示例

        struct sockaddr_in servaddr, cliaddr;bzero(&servaddr, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//将一个32位数从主机字节顺序转换成网络字节顺序servaddr.sin_port = htons(PORT); //#define PORT 8889


0 0
原创粉丝点击