2013-05-03 141 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