linux网络编程之地址结构sockaddr和sockaddr_in的区别

167 阅读1分钟

1、介绍sockaddr

结构体struct sockaddr在/usr/include/linux/socket.h中定义

 

struct sockaddr {
    unsigned short    sa_family;    // 2 bytes address family, AF_xxx
    char              sa_data[14];     // 14 bytes of protocol address
};

 

 

 

2、介绍sockaddr_in

结构体struct sockaddr_in在/usr/include/netinet/in.h中定义,是IPv4的地址结构

struct sockaddr_in {
    short            sin_family;       // 2 bytes e.g. AF_INET, AF_INET6
    unsigned short   sin_port;    // 2 bytes e.g. htons(3490)
    struct in_addr   sin_addr;     // 4 bytes see struct in_addr, below
    char             sin_zero[8];     // 8 bytes zero this if you want to
};

struct in_addr {
    unsigned long s_addr;          // 4 bytes load with inet_pton()
};

 

 

 

3、对比总结

struct sockaddr是通用的套接字地址,而struct sock