将socket监听器绑定到远端IP后 是否仍可从localhost连接该端口?
问题解答
- 如果你调用
bind(2)时仅填入指定的远端可访问物理网卡IP,本地进程无法通过localhost(127.0.0.1)连接到该端口。因为该socket仅绑定到了指定的网卡接口,只会接收目标地址为该物理IP的请求,本地环回接口的127.0.0.1地址不在监听范围内,对应请求会被直接拒绝。 - 若需要同时支持远端IP访问和本地localhost访问,可将绑定地址设置为特殊值
0.0.0.0(IPv4场景)或::(IPv6双栈场景),该配置表示绑定当前主机所有可用的网络接口,包括本地环回接口和所有物理网卡接口,两种来源的请求都可以正常处理。 - 该问题和"如何将socket绑定到多个接口"本质属于同一类问题:你的需求是同时覆盖本地环回接口和对外提供访问的物理接口,使用上述全零绑定地址是最简单的实现方案,无需为不同接口单独创建和绑定socket。
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

