gpt4 book ai didi

c++ - 套接字编程 : Struct sockaddr VS struct sockaddr_in

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:48 25 4
gpt4 key购买 nike

我在下面看到了类似的问题:

struct sockaddr_un v/s sockaddr - C(Linux)

但我仍然不清楚 sockaddr_in 和 sockaddr 之间的区别,每个套接字方法/函数,即绑定(bind)、连接,似乎使用 sockaddr 而不是 sockaddr_in,这些结构可以互换吗?如果只使用 sockaddr 那么为什么会有 _in 一个?我更喜欢 _in 看起来更详细和分类。

如果我违反了任何规则,请删除帖子;(

大多数时候第三个参数是addr_len 这个是用来快速区分ipv4和ipv6的吗?

最佳答案

sockaddr 是一个通用 套接字地址。如果您还记得的话,您可以通过相同的操作系统 API - socket() 创建 TCP/IPv4、UDP/IPv4、UNIX、TCP/IPv6、UDP/IPv6 套接字(以及更多!)

所有这些不同的套接字类型都有不同的实际地址 - 由不同的字段组成。

sockaddr_in实际 IPv4 地址布局(它有.sin_port.sin_addr)。 UNIX 域套接字将具有 sockaddr_un 类型,并将定义不同的字段,特定于 UNIX 套接字系列。

基本上 sockaddr 是字节的集合,它的大小是所有支持的(操作系统)套接字/地址系列的最大大小,这样它可以容纳所有支持的地址。

关于c++ - 套接字编程 : Struct sockaddr VS struct sockaddr_in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29649348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com