Java Networking:拒绝连接 – 是的,我的服务器正在运行

当我的客户端尝试连接到我的服务器套接字时,我收到以下错误:

java.net.ConnectException: Connection refused: connect 

但是,我的服务器真的在同一台机器上运行。 我尝试使用路由器的外部IP连接到它。 但是当我尝试连接"localhost" ,它可以工作。 而且,是的,我在路由器中正确地进行了端口转发。 甚至canyouseeme.org也可以连接到我的服务器(该网站说:“成功”,在我的服务器日志中显示有人与服务器连接。)

那么,是否由于一个或另一个原因无法通过外部IP连接到同一台机器(或同一网络中的机器)? 或者这是Windows的典型特征吗? (通常,我使用Linux)

我还试图完全禁用Windows防火墙。

ServerSocket的:

 public ServerSocket ssocket; public List handlers; public Server(int port) { // Constructor try { ssocket = new ServerSocket(port); this.handlers = new ArrayList(); IpSharingManager.uploadData(Utilities.getPublicIp(), port); } catch (Exception e) { e.printStackTrace(); System.exit(-1); } } 

客户:

 public InvisibleClient(String host, int port) { try { System.out.println("Trying to connect to " + host + ":" + port); this.host = host; this.socket = new Socket(host, port); this.bis = new BufferedInputStream(this.socket.getInputStream()); this.bos = new BufferedOutputStream(this.socket.getOutputStream()); this.console = new RemoteConsole(this.socket); initializeCommunication(); System.out.println("Successfully connected!"); new Thread(this, "Client Thread").start(); } catch (Exception e) { e.printStackTrace(); System.out.println("No server available"); } } 

谢谢

某些路由器不允许内部网络连接到路由器的外部IP地址。

您可以尝试使用telnet连接到服务器套接字。 如果telnet无法建立连接,则可能是网络问题。

将java.exe进程和端口添加到防火墙例外列表中?

编辑:刚读过你已经尝试过了。 我可以建议的是确保网络没有阻止该端口。 (路由器)

您是否尝试使用JVM选项运行它: java.net.preferIPv4Stack=true

对于我在你的代码中看到的,你错过了接受连接的部分,在实例化服务器套接字之后你需要ssocket.accept()来接受连接,然后你必须从套接字开始读取outputstrem