gpt4 book ai didi

c - 绑定(bind)到 INADDR_ANY 和特定 IP 的差异

转载 作者:太空狗 更新时间:2023-10-29 17:11:54 26 4
gpt4 key购买 nike

我对绑定(bind)套接字时 INADDR_ANY 的使用和后果感到困惑。当然 INADDR_ANY 会监听所有本地接口(interface)。我的问题是这会产生什么后果。

我记得读过,绑定(bind)到特定 IP 地址允许内核处理多路分解,但无法再找到引用。

使用 INADDR_ANY 会产生这种后果,还是我只会从我所有的本地 ip 接收数据?使用每种绑定(bind)的好处和问题是什么?

讨论这个的其他问题:

bind with INADDR_ANY

Question about INADDR_ANY

编辑:找到引用。 It's from Unix Network Programming (Stevens)

One advantage in binding a non-wildcard IP address is that the demultiplexing of a given destination IP address to a given server process is then done by the kernel.

这到底是什么意思?

最佳答案

绑定(bind)到特定接口(interface)仅在非常特殊的情况下使用,当应用程序需要“知道”本地 IP 地址和即时网络布局时。路由守护程序可能是最好的例子。

另一个更简单的例子:如果你有一台多宿主机器(即一台机器有多个 Internet 连接,可能是不同的 ISP)你可以绑定(bind)到一个特定的接口(interface)以确保连接通过一个给定连接。分别绑定(bind)到每个网络接口(interface),应用程序可以检测链接断开等。

需要“知道”本地 IP 地址的协议(protocol)(臭名昭著的例子:FTP、SIP、UPnP)的实现倾向于将套接字绑定(bind)到特定接口(interface)。 (我认为它们是糟糕的协议(protocol),因为它们违反了传输层和应用层之间的隔离)。

除了这些情况,绑定(bind)到特定接口(interface)通常是过度设计,因为地址和接口(interface)可能会发生变化,程序必须检测到这些情况以更新相应的套接字。

关于c - 绑定(bind)到 INADDR_ANY 和特定 IP 的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18847594/

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