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