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防火墙?即使你的路由器转发正常,也许你的防火墙被阻塞了?