Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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网络:连接被拒绝-是的,我的服务器正在运行_Java_Networking - Fatal编程技术网

Java网络:连接被拒绝-是的,我的服务器正在运行

Java网络:连接被拒绝-是的,我的服务器正在运行,java,networking,Java,Networking,当我的客户端尝试连接到我的服务器套接字时,我遇到以下错误: java.net.ConnectException: Connection refused: connect 但是,我的服务器在同一台机器上运行。我尝试使用路由器的外部IP连接到它。但是,当我尝试连接“localhost”时,它就起作用了。是的,我在路由器中正确地进行了端口转发。甚至canyouseeme.org也可以连接到我的服务器(网站上说:“成功”,在我的服务器日志中显示有人与服务器连接。) 那么,是否出于某种原因无法通过外部I

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

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

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

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

服务器套接字:

public ServerSocket ssocket;
public List<ClientHandler> handlers;

public Server(int port) { // Constructor
    try {
        ssocket = new ServerSocket(port);
        this.handlers = new ArrayList<ClientHandler>();
        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()的服务器套接字之后,您错过了接受连接的部分要接受连接,然后您必须开始从套接字读取输出字符串

假设您正在编写TCP服务器,您是否能够远程登录到您的服务器?Try:telnet localhost您正在运行哪台服务器?@gawi:我正在运行Windows…它看起来像路由配置。在superuser或serverfault中,在家中这样做可能更好吗?您是否打开了windows防火墙?即使你的路由器转发正常,也许你的防火墙被阻塞了?