Java 为什么要绑插座
我在这里搜索了一下,找到了一篇类似的文章,但我并没有真正得到我想要的答案。我正在通过一些示例和一些伪逆向工程学习Java网络。Oracle的文档也很有帮助,但我有几个问题 为什么要将IP地址绑定到Java 为什么要绑插座,java,sockets,Java,Sockets,我在这里搜索了一下,找到了一篇类似的文章,但我并没有真正得到我想要的答案。我正在通过一些示例和一些伪逆向工程学习Java网络。Oracle的文档也很有帮助,但我有几个问题 为什么要将IP地址绑定到套接字?有必要吗?你什么时候用这种装订 以下是向我提出问题的部分代码: ServerSocket myServerSocket = new ServerSocket(1337); System.out.println("Server is waiting for an incoming connecti
套接字
?有必要吗?你什么时候用这种装订
以下是向我提出问题的部分代码:
ServerSocket myServerSocket = new ServerSocket(1337);
System.out.println("Server is waiting for an incoming connection from client...");
Socket recievingSocket = myServerSocket.accept();
现在,据我所知,如果我要绑定一个套接字,它将在运行
accept()
正确吗?将套接字绑定到一个地址,以限制套接字将侦听的位置。如果您想让它使用默认行为(IIRC要监听任何行为),则不需要这样做
您应该在使用accept之前绑定,因为accept告诉套接字开始侦听套接字,而bind告诉它在哪里查找。套接字在侦听之前需要知道在哪里查找。套接字本质上是=IP+端口。 是的,你需要一个IP地址来创建一个套接字。这个过程被称为绑定,因为您可以将多个端口绑定到同一个地址,所有端口都监听它们各自的传入连接 以上几乎总结了您的问题,即是否有必要,但要添加另一点——假设您创建了一个客户端来连接到服务器。如果不知道服务器IP地址和要连接的端口,它将如何连接 为什么要将IP地址绑定到套接字 确定它将通过哪个出站接口连接 有必要吗 理论上,不是。在实践中,通过VPN连接时有时需要它 从我的理解来看,如果我要绑定一个套接字,那么它就在运行accept()之后,对吗 不对。接受或连接的
套接字已绑定。绑定套接字的唯一方法是:
使用不带参数的new Socket()
创建它,然后调用bind(),
或
使用四参数构造函数创建它,其中前两个参数是目标地址,后两个是绑定地址
bind()
的主要用途是与ServerSocket
结合使用。例如,在您的示例中,调用newserversocket(1337)
创建一个套接字,将其绑定到0.0.0.0:1337,并将其置于侦听状态。根据定义,套接字是IP地址和端口。你可能会发现读一些好书很有用。这两样东西其实是一样的。地址:端口组合通常只对一个套接字可用。谢谢大家。这是最有用的信息!=)任何一个都不能回答这个问题,而开始“进程被称为绑定”的部分基本上是没有意义的。因此,在服务器bind()的情况下,它基本上是内置在构造函数中的?我的意思是,假设我使用了一个没有参数的构造函数(假设定义了一个),那么我必须调用bind(),是吗?