1

我有一个使用套接字相互通信的 java 游戏应用程序。

问题是当我进行套接字侦听(服务器)时,我可以使用与以前相同的端口在同一台机器上运行游戏的另一个实例来侦听,并导致再次侦听。现在我有两个应用程序实例都在同一个端口上侦听。您可以想象当连接通过时只有一个连接。

问题是:如何防止应用程序在另一个实例已经在监听的同一端口上监听?

提前致谢。

编辑:serverSocket = new ServerSocket(serverPort, backlog);我正在使用这个。我应该尝试使用:ServerSocket(int port, int backlog, InetAddress bindAddr)代替吗?

编辑:解决了!我没有处理异常,只是把它困住了。现在它运作良好。感谢您的投入。

4

2 回答 2

1

两个应用程序不可能使用相同的 IP 侦听相同的端口。第二个应用程序将获得一个异常“端口已在使用中”。

于 2010-05-16T16:25:06.387 回答
0

只有一个 OS 进程可以在特定端口上打开服务器套接字。用于实现该过程的语言无关紧要;这是 TCP 套接字寻址的限制。

(好吧,当您开始摆弄将地址绑定到套接字时,这并不完全正确。但这是一个非常好的初步近似值;它不正确的方式对于一般程序来说往往不是很有用。)

于 2010-05-16T16:24:58.033 回答