Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将ServerSocket绑定到外部IP_Java_Sockets - Fatal编程技术网

Java 将ServerSocket绑定到外部IP

Java 将ServerSocket绑定到外部IP,java,sockets,Java,Sockets,为了便于学习,我构建了一个简单的服务器/客户端聊天应用程序。 现在,当我使用默认构造函数serversocketserver=newserversocket(18524)初始化服务器时,它在本地工作得非常好

为了便于学习,我构建了一个简单的服务器/客户端聊天应用程序。 现在,当我使用默认构造函数
serversocketserver=newserversocket(18524)初始化服务器时,它在本地工作得非常好client=newsocket(servername,18524)
servername=“localhost”

我还知道如何在本地网络上使用它,即连接到192.168.x.x上托管的服务器

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

知道这是为什么吗

编辑:我做了以下几件事,也许我还遗漏了什么

server.bind(new InetSocketAddress("87.x.x.x", 18524));
我还转发了路由器上的端口18524(TCP和UDP),并确保该端口在windows防火墙上打开


我仍然收到:
线程“main”java.net.BindException中的异常:无法分配请求的地址:JVM\u Bind
您无法将套接字绑定到外部IP地址。您只能将其绑定到当前主机本地的IP地址。通常只指定0.0.0.0。如果外部端口转发正确,这就足够了。

检查了防火墙配置?我认为路由器的防火墙会阻止对该端口的请求。你需要把它们转发到你的服务器。老实说,我会检查的。你的服务器internet连接配置如何?服务器网络上是否有防火墙/路由器?请尝试在不在您个人网络上的计算机上使用
客户端。我的路由器曾经有过一次问题,它禁止任何来自网络内部并指向网络外部IP地址的连接。此外,请检查路由器如何转发端口18524上的传入消息,并确保它们被定向到您的计算机。因此,如果我将其绑定到0.0.0.0,客户端可以使用我的外部IP连接到托管服务器?