【问题标题】:Why bind a socket to an address?为什么要将套接字绑定到地址?
【发布时间】:2011-11-25 06:55:44
【问题描述】:

在“监听”套接字之前,我必须先将它绑定到一个地址。为什么?在我看来,我不应该选择并且应该只听所有地址上的那个端口。即使我绑定到 127.0.0.1,似乎我仍然可以从远程机器连接到该套接字。绑定到地址的真正作用是什么?

【问题讨论】:

  • 我会仔细检查您是否实际绑定到 127.0.0.1,因为如果确实如此,您应该无法连接到其他接口。如果在 linux 上,您可以运行“netstat -nlut”来获得每个服务的漂亮输出以及它正在侦听的地址/端口。
  • 你说得对,实际上是在将 127.0.0.1 重写为 0.0.0.0。

标签: sockets


【解决方案1】:

绑定到地址确切地定义了哪个接口应该打开该服务器端口。 当您想监听接口知道的所有 IP 地址时,绑定到 0.0.0.0 是一种特殊情况。 专门绑定到 127.0.0.1 应该使服务器端口对可以连接到本地主机的代码(例如本地进程)可见。

【讨论】:

  • +1,附加信息。绑定可用于仅接受本地连接。如果您有多个 ip 地址,您还可以让不同的服务器在同一个端口上侦听不同的 ip。
  • @jgauffin 除非这些不同的 IP 地址是同一个网络接口的别名……我说的对吗?换句话说,两台服务器不能为同一个接口(在同一个端口上)绑定到不同的 IP 地址别名。如果您有不同的想法,请告诉我...
猜你喜欢
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 2017-05-05
  • 1970-01-01
相关资源
最近更新 更多