Java - 异步套接字通道无法连接到远程异步服务器套接字通道
Java - async socket channel cannot connect to remote async server socket channel
我创建并调试了一个使用 AsynchronousSocketChannel
和 AsynchronousServerSocketChannel
的简单网络应用程序,它们在通过 localhost
访问时工作正常,但即使我将服务器应用程序移动到另一台设备它根本拒绝连接。当我尝试对应用程序进行端口转发时,我首先注意到了这一点,但在将其移动到同一网络上的设备上并通过 IPv4 连接后,它仍然无法正常工作。我检查了这两个设备,它们都允许 Java 通过防火墙,并且没有任何东西阻止我使用的端口号(我还测试了各种其他端口)。如果客户端在同一台机器上并且您使用该机器的 IPv4,则客户端甚至无法连接到服务器。它实际上只适用于 localhost
。还有其他人遇到过这个问题吗?
服务器通道是这样打开的:
serverSocket = AsynchronousServerSocketChannel.open();
serverSocket.bind(new InetSocketAddress("127.0.0.1", port));
通过删除 InetSocketAddress
的 IP 部分修复了它:
serverSocket = AsynchronousServerSocketChannel.open();
serverSocket.bind(new InetSocketAddress(port));
将127.0.0.1
替换为本机的IPv4,效果相同。如果有人能对此进行解释,那就太好了,因为我在网上看到的每个示例都绑定到 localhost
。 AsynchronousServerSocketChannel
不应该被远程访问还是什么?
我创建并调试了一个使用 AsynchronousSocketChannel
和 AsynchronousServerSocketChannel
的简单网络应用程序,它们在通过 localhost
访问时工作正常,但即使我将服务器应用程序移动到另一台设备它根本拒绝连接。当我尝试对应用程序进行端口转发时,我首先注意到了这一点,但在将其移动到同一网络上的设备上并通过 IPv4 连接后,它仍然无法正常工作。我检查了这两个设备,它们都允许 Java 通过防火墙,并且没有任何东西阻止我使用的端口号(我还测试了各种其他端口)。如果客户端在同一台机器上并且您使用该机器的 IPv4,则客户端甚至无法连接到服务器。它实际上只适用于 localhost
。还有其他人遇到过这个问题吗?
服务器通道是这样打开的:
serverSocket = AsynchronousServerSocketChannel.open();
serverSocket.bind(new InetSocketAddress("127.0.0.1", port));
通过删除 InetSocketAddress
的 IP 部分修复了它:
serverSocket = AsynchronousServerSocketChannel.open();
serverSocket.bind(new InetSocketAddress(port));
将127.0.0.1
替换为本机的IPv4,效果相同。如果有人能对此进行解释,那就太好了,因为我在网上看到的每个示例都绑定到 localhost
。 AsynchronousServerSocketChannel
不应该被远程访问还是什么?