ZBLOG

`struct sockaddr` 与 `struct sockaddr_in` 的区别

struct sockaddr 是一个通用的地址结构,用于表示各种类型的网络地址,包括 IPv4、IPv6、Unix 域等。它定义如下:

struct sockaddr {
    unsigned short sa_family;  // 地址族,如 AF_INET 表示 IPv4
    char sa_data[14];          // 地址数据
};

struct sockaddr_in 是在 struct sockaddr 的基础上针对 IPv4 地址进行特定定义的结构体,它包含了 IP 地址和端口号信息。它定义如下:

struct sockaddr_in {
    short sin_family;           // 地址族,固定为 AF_INET
    unsigned short sin_port;    // 端口号
    struct in_addr sin_addr;    // IPv4 地址结构
    char sin_zero[8];           // 填充位,用于补齐长度与 sockaddr 相同
};

struct in_addr {
    unsigned long s_addr;       // 存储 IP 地址的无符号长整型变量
};

因此,struct sockaddr_in 主要用于表示 IPv4 的地址信息,而 struct sockaddr 则是一个更通用的地址结构,在不同协议族之间转换时使用。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=4834

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?