2013-05-03 142 views
-2

我已经构建了一个简单的服务器/客户端聊天应用程序,用于学习目的。 现在本地工作完美,而我使用的是默认的构造函数ServerSocket server = new ServerSocket(18524);并在客户端上我使用client = new Socket(servername, 18524)servername = "localhost";将ServerSocket绑定到外部IP

我也想通了如何使用它在我的本地网络,即连接到服务器上初始化我的服务器托管在192.168.xx上

问题是,当我尝试到我的服务器绑定到我的外部IP地址,即87.92.x.x

任何想法,这是为什么hapening?

编辑:我做了以下,也许我仍然失去了一些东西。

server.bind(new InetSocketAddress("87.x.x.x", 18524)); 

我也转发端口18524(TCP和UDP)我的路由器上,并确保该端口是在我打开Windows防火墙。

不过我收到:Exception in thread "main" java.net.BindException: Cannot assign requested address: JVM_Bind

+2

检查防火墙配置? – 2013-05-03 13:35:16

+0

不诚实,我会检查。 – 2013-05-03 13:39:00

+0

你的服务器网络连接配置如何?服务器网络上是否有防火墙/路由器? – 2013-05-03 13:39:33

回答

0

您可以将插座不绑定到一个外部IP地址。您只能将其绑定到当前主机本地的IP地址。通常你只指定0.0.0.0。如果外部端口正确转发就足够了。

+0

因此,如果我将它绑定到0.0.0.0,客户端可以使用我的外部IP连接到托管服务器? – 2013-05-03 20:21:06