我有这个简单的服务器代码:
public class Server {
public static void main(String[] args) {
try {
ServerSocket sSocket = null;
int serverPort = 57293;
try {
sSocket = new ServerSocket(serverPort);
Socket userSocket = sSocket.accept();
System.out.println(userSocket.getInetAddress().toString());
} catch (IOException listenEX) {
System.out.println("Could not listen on port: " + serverPort);
}
sSocket.close();
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
服务器侦听端口57293
和 IP0.0.0.0
它只是等待一个连接,然后打印客户端的 IP 地址。这是客户端代码:
public class Client {
public static void main(String[] args) throws IOException {
Socket serverSocket = new Socket("192.168.217.1", 57293);
DataInputStream in = new DataInputStream(serverSocket.getInputStream());
DataOutputStream out = new DataOutputStream(serverSocket.getOutputStream());
}
}
现在作为客户端内的服务器IP,我输入计算机的本地IP。如果我这样做,服务器将打印相同的 IP 作为结果,即/192.168.217.1
否则,如果在客户的代码中我更改了行
Socket serverSocket = new Socket("192.168.217.1", 57293);
到
Socket serverSocket = new Socket("127.0.0.1", 57293);
我刚刚更改了服务器 IP,服务器会将127.0.0.1
IP 打印为客户端的 IP 地址。
我不明白这里发生了什么。似乎服务器没有打印客户端的 IP 地址,而是打印自身的地址。
我怎样才能避免这种情况发生?192.168.217.1
如果客户端也在本地运行,我希望服务器打印