我有一个Java服务器代码,我在我的机器上运行,而我的朋友有一个在他的机器上运行的客户端代码。当他输入我的IP以便连接到我的服务器并获取日期时,连接失败并且没有任何反应。请注意,当我在自己的计算机上运行服务器和客户端程序并输入 localhost 作为地址时,连接成功并且我正确地获得了日期消息。我正在寻找导致此问题的可能错误和问题。
Java中的服务器代码:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket listener = new ServerSocket(9999);
try {
while (true) {
Socket socket = listener.accept();
try {
PrintWriter out =
new PrintWriter(socket.getOutputStream(), true);
out.println(new Date().toString());
} finally {
socket.close();
}
}
}
finally {
listener.close();
}
}
}
Java中的客户端代码:
import javax.swing.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
String serverAddress = JOptionPane.showInputDialog(
"Enter IP Address of a machine that is\n" +
"running the date service on port 9999:");
Socket s = new Socket(serverAddress, 9999);
BufferedReader input =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String answer = input.readLine();
JOptionPane.showMessageDialog(null, answer);
System.exit(0);
}
}
答案 0 :(得分:0)
某些路由器可能会隔离不同网络中的计算机。尝试使用Wifi上的两台计算机或两台都连接到路由器。您的IP是否在同一网络上?你能在网络上看到你朋友的电脑吗?您的路由器上可能还有一些安全配置。
除此之外和防火墙问题(已禁用),代码看起来应该可以正常工作。