gpt4 book ai didi

Java——套接字编程

转载 作者:行者123 更新时间:2023-11-29 08:36:26 25 4
gpt4 key购买 nike

我阅读和观看的所有关于 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,让我的 friend 在他的计算机上运行 TestClientSocket。必须对此代码进行哪些更改才能使其正常工作?

最佳答案

“localhost”本质上是您的环回 IP 地址 127.0.0.1 的别名

为了让您的 friend 连接到您的服务器,代码必须用您服务器的 IP 地址代替“localhost”。

需要注意的重要一点,如果您的 friend 不在您的本地网络上,您将不得不使用您的出站 IP 地址和端口转发路由器上的正确端口。不过,如果您不熟悉这种类型的网络,我不会尝试。如果您不小心,即使您很小心,也可能会遭受无数基于网络的攻击。<​​/p>

关于Java——套接字编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43790698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com