gpt4 book ai didi

java - 为什么要绑定(bind)socket

转载 作者:行者123 更新时间:2023-11-30 04:02:52 25 4
gpt4 key购买 nike

我在这里搜索并找到了一篇类似的文章,但我并没有真正得到我正在寻找的答案。我正在通过一些示例和一些伪逆向工程来学习 Java 网络。 Oracle 的文档也很有帮助,但我有几个问题。

为什么要将 IP 地址绑定(bind)到 Socket?有必要吗?您什么时候会使用所述绑定(bind)?

这是向我提出问题的部分代码:

ServerSocket myServerSocket = new ServerSocket(1337);
System.out.println("Server is waiting for an incoming connection from client...");
Socket recievingSocket = myServerSocket.accept();

现在,根据我的理解,如果我要绑定(bind)一个套接字,它将在运行 accept() 之后立即进行,正确吗?

最佳答案

Why exactly do you bind an IP address to a Socket?

确定它将通过哪个出站接口(interface)进行连接。

Is it necessary?

理论上来说,不会。实际上,通过 VPN 连接时有时需要这样做。

Now from what I understand that if I was to bind a Socket it would be right after the running accept() correct?

不正确。已接受或连接的Socket 已绑定(bind)。绑定(bind)Socket的唯一方法是:

  1. 使用不带参数的 new Socket() 创建它,然后调用 bind(),
  2. 使用四参数构造函数创建它,其中前两个参数是目标地址,后两个参数是绑定(bind)地址。

bind() 的主要用途是与 ServerSocket 结合使用。例如,在您的示例中,调用 new ServerSocket(1337) 创建一个套接字,将其绑定(bind)到 0.0.0.0:1337,并将其置于 LISTEN 状态。

关于java - 为什么要绑定(bind)socket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21519828/

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