我应该在接受之前调用bind吗?

时间:2017-01-29 13:24:42

标签: java sockets

我在Java中创建ServerSocket:

ServerSocket server = null;

try {

    server = new ServerSocket(5050);

    System.out.println("Listening on port 5050");

    // Accept the client
    Socket s = server.accept();

    System.out.println("Cliented was accepted : " + s.getInetAddress() +
    "on port " + s.getLocalPort()  );

}

finally {

        if (server != null)
            server.close();
    }

大多数情况下,我刚看到有人使用accept方法,所以我不确定bind方法的用例。

但是如果我在打印消息之前调用bind并且#34;听端口"会不会更好?

2 个答案:

答案 0 :(得分:1)

通过向构造函数提供端口号隐式地调用bind()

答案 1 :(得分:1)

我是否需要致电bind

来自Oracle documentation

  

ServerSocket(int port)

     

创建绑定到指定端口的服务器套接字。

所以不,你不需要调用bind因为你的套接字已经被构造函数绑定了。

差异bind / accept

编辑:旧的答案有不同的标题,这就是我在这里留下这部分答案的原因。

使用bind时,您说“此服务器将侦听端口 XXX ”。这也会阻止你的应用程序的这个端口,所以没有其他人会绑定在同一个端口上。

如果您希望接受新客户端,请等到某个客户端想要连接到服务器;当客户端连接时,accept将返回。

请下次通过做更多研究来尝试自己寻找解决方案。 (我总是建议查看文档)

请参阅here寻求帮助。