为什么`struct sockaddr`包含一个地址族字段?

mdm*_*mdm 5 c unix sockets

为什么struct sockaddr包含地址系列字段?地址系列是否已通过调用固定socket()

Jon*_*ght 4

sockaddr不仅仅用于connectbind,还用于更多地方,包括您对所涉及的地址族没有一些外部知识的地方 -getaddrinfo是其中之一。

此外,虽然我不认为以下内容等同于在任何地方实践,但我可以看到最初设计这个东西的人都在考虑这一点:调用定义socket()协议族。 sockaddr包含地址族。在实践中,我相信这些总是相同的,但理论上您可以拥有一个能够支持两种不同地址类型的协议。

编辑:该参数还有另一种有用的方式。如果您使用数据报 (UDP) 套接字,并且有一个处于“已连接”状态且具有默认目标地址的套接字,则可以通过将with设置为 的调用来清除该地址connect()sockaddrsa_familyAF_UNSPEC