我想通過使用它的公共i.pt來連接到java中的服務器機器。但是當我運行客戶端應用程序時,我經常得到連接拒絕錯誤。如果我使用本地主機而不是公共IP,它可以很好地工作。與公共i.ppp的java tcp連接
我在網上搜索了幾個問題的原因,但我無法修復它。
我在路由器設置中將端口轉發到我的機器的本地i.p地址(192.168.1.3)。然後我檢查了端口是否正在監聽,當我使用netstat -an運行服務器應用程序時。我看到線如 0.0.0.0:19999或[]:19999。 19999是我想聽的端口號。然後我將我的ServerSocket構造函數更改爲3參數,它也綁定本地地址。
InetAddress miad = InetAddress.getByAddress(addr);
ServerSocket socket1 = new ServerSocket(port,10,miad);
addr是我的機器本地i.p.的InetAddress。這些修改後,當我啓動服務器應用程序,我運行netstat它表明:
TCP 192.168.1.3:19999 0.0.0.0 LISTENING
在這裏,我認爲我的服務器正確指定的端口上偵聽。
我也禁用了我的防火牆和防病毒軟件。
我已經看到了有關該問題的網絡上的幾個線程和討論,並嘗試了大部分提到那裏的事情,但我不斷收到連接拒絕錯誤。
我能做什麼錯?它運行時沒有任何錯誤,當我測試本地主機。
添加[SSCCE](http://sscce.org/)以更快獲得幫助。 – MockerTim
您是從自己的本地網絡使用公共IP連接到服務器還是從互聯網上的其他地方連接? (前者不適用於很多路由器/調制解調器) – nos
實際上,我在同一臺機器上執行此操作。那是這個問題嗎? – bahti