我正在尝试编写一个(对于初学者来说很简单)服务器-客户端的东西,只是为了建立一个连接并查看它是否有效。它确实如此。只要我呆在自己的四堵墙/网络内。一旦我尝试通过我的路由器 IP,客户端就会产生一个非常好的错误消息。所有常见的疑点都已消除:路由器端口转发已打开,防火墙没有干扰(好吧,当我关闭它时它仍然不起作用),并且 canyouseeme.org 说它可以建立与我选择的连接服务器运行时的端口。
这是服务器的源代码,因为我发现可以通过命令行进行一些远程登录。当我尝试建立连接时,它只是说Could not open connection to the host, on port 49163:Connection failed
服务器:
import java.net.*;
import java.io.*;
public class ChatServer {
public static void main(String[] args) throws IOException {
ServerSocket server = null;
try {
System.setProperty("java.net.preferIPv4Stack" , "true");
server = new ServerSocket(49163);
} catch (IOException e) {
System.err.println("Could not listen on port: 49163.");
System.exit(1);
}
Socket client = null;
try {
client = server.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
PrintWriter out = new PrintWriter(client.getOutputStream(), true);
BufferedReader in = new BufferedReader(newInputStreamReader(client.getInputStream()));
String inputLine;
String outputLine;
out.println("Connection established");
while ((inputLine = in.readLine()) != null) {
if (inputLine.equals("exit")) {
break;
}
outputLine = inputLine;
out.println(outputLine);
}
out.close();
in.close();
client.close();
server.close();
System.out.println("Server offline");
}
}
哦,是的,preferIP4vStack 是我在 Stackoverflow 上学到的,但它似乎对我不起作用。
出于某种原因,我无法为客户端添加代码,我不断收到有关格式化的消息,我就是想不通。但我看到它的方式是我什至无法通过命令行连接(当我尝试连接到“真实”IP时),所以客户端不必参与。但是对于无论如何都想看到错误的你:
java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at ChatClient.main(ChatClient.java:12)