2010-05-16 32 views
1

我有一个java游戏应用程序,它使用套接字互相沟通。Java ServerSocket多个监听实例

的问题是,当我做一个插座听(服务器),我可以使用同一端口作为以前听同一台机器上运行游戏的另一个实例,并且它导致再次聆听。现在我有两个应用程序在同一个端口上侦听。你可以想象当连接通过时只有一个连接。

的问题是:我如何阻止应用监听同一端口的另一个实例已在听什么?

在此先感谢。

编辑:serverSocket = new ServerSocket(serverPort, backlog); IM使用此。我应该尝试使用:ServerSocket(int port, int backlog, InetAddress bindAddr)而不是?

编辑:解决了!我没有处理这个例外,只是陷入了困境。现在它运作良好。感谢您的投入。

回答

1

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

+0

好我是这么认为,但现实是我在后上报。有任何想法吗? – iTEgg 2010-05-16 16:29:04

+0

当我使用tcpview来监视连接时,第二个服务器不会在连接列表中添加新的监听。因此,为什么它没有报告已经在使用的端口,这是好的,但我会失去。 – iTEgg 2010-05-16 16:30:56

+0

当你提到“例外”时,我会给你答案。 – iTEgg 2010-05-16 16:40:37

0

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

(OK,当你开始用绑定地址到插座周围摆弄它并不完全正确,但它是一个非常良好的第一近似;其中,这是不正确的方法往往是一般程序不是非常有用)