我阅读和观看的关于java套接字编程的所有教程都涉及一个常见的基本单词,即localhost。我已经玩了一段时间的java服务器-客户端程序,做了一些实验。但每次,我的电脑都是服务器和客户端,所以当涉及到其他试图连接到我计算机上的服务器的计算机时,我不太明白如何让事情正常工作。
例如,以以下基本的服务器-客户机类为例:
服务器-类
public class TestServerSocket {
public static void main(String args[]) throws IOException {
final int portNumber = 444;
System.out.println("Creating server socket on port " + portNumber);
ServerSocket serverSocket = new ServerSocket(portNumber);
while (true) {
Socket socket = serverSocket.accept();
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os, true);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//...code...
}
socket.close();
pw.close();
os.close();
br.close();
}
}客户类
public class TestClientSocket {
public static void main(String args[]) throws IOException {
final String host = "localhost";
final int portNumber = 444;
System.out.println("Creating socket to '" + host + "' on port " + portNumber);
while (true) {
Socket socket = new Socket(host, portNumber);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader userInputBR = new BufferedReader(new InputStreamReader(System.in));
//...code...
}
socket.close();
out.close();
br.close();
userInputBR.close();
}
}现在,假设我想在我的计算机上运行TestServerSocket,让我的朋友在他的计算机上运行TestClientSocket。为了使代码正常工作,必须对此代码进行哪些更改?
发布于 2017-05-04 18:56:21
"localhost“本质上是回送IP地址127.0.0.1的别名。
如果您的朋友要连接到您的服务器,代码必须有您服务器的IP地址而不是"localhost“。
重要的是,如果您的朋友不在您的本地网络,您将不得不使用您的出站IP地址和端口转发适当的端口在您的路由器。虽然,如果你不熟悉这种类型的网络,我不会尝试。如果你不小心,即使你很小心,你也可以面对无数基于网络的攻击。
https://stackoverflow.com/questions/43790698
复制相似问题