Nul*_*low 6 java sockets networking client server
我需要创建一个连接到服务器的服务器和客户端.
问题:"服务器工作.客户端只能连接到localhost,它无法连接到Internet上的服务器.我希望客户端通过托管服务器的公共IP地址连接到服务器."
首先,我确保端口已转发并且可以访问我已经测试了端口,其次我完全禁用了服务器计算机上的防火墙.
下面是我正在使用的测试代码:
服务器:没有什么特别的简单 - 如果连接客户端则终止,否则只是等待连接.
public class Server {
public static void main(String args[]) {
try {
ServerSocket srvr = new ServerSocket(52000);
srvr.accept();
}
catch(Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
客户端:我使用no-ip.com将服务器的ip掩码为"biogenserver2.noip.me".使用.getCanonicalHostName(); 将返回IP.
public class Client {
public static void main(String args[]) {
try {
String ip = Inet4Address.getByName("somets.noip.com").getCanonicalHostName();
InetSocketAddress sa = new InetSocketAddress(ip, 52000);
//Socket skt = new Socket("0.0.0.0", 52000); //local - this works fine.
Socket skt = new Socket();
skt.connect(sa);
}
catch(Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,服务器连接正常,但客户端返回"连接超时"异常
任何帮助将不胜感激.谢谢.
您的应用程序使用哪个版本的 IP 协议?在 Linux 上,您可以通过netstat -tunap | grep 52000观察第一个字段是否是tcp或来判断tcp6。如果是后者,则可能存在 IPv6 连接问题,并且您可能希望通过指定-Djava.net.preferIPv4Stack=trueJVM 更喜欢使用 IPv4 而不是 IPv6。