[英]Java - socket programming
我阅读并观看过的有关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。 为了使此代码正常工作,必须对其进行哪些更改?
本质上,“ localhost”是您的回送IP地址127.0.0.1的别名
为了使您的朋友连接到您的服务器,该代码必须使用您服务器的IP地址代替“ localhost”。
需要注意的重要一点是,如果您的朋友不在本地网络上,则您将必须使用出站IP地址并通过端口转发路由器上的正确端口。 虽然,如果您不熟悉这种类型的网络,则不会尝试。 如果您不小心甚至不小心,就可以接受各种基于网络的攻击。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.