用java实现两台电脑不在同一个局域网的通信
时间: 2023-08-05 07:07:34 浏览: 228
如果两台电脑不在同一个局域网,那么它们之间的通信需要经过公网。在此情况下,可以使用Socket和服务器的组合来实现两台电脑之间的通信。
具体来说,可以在公网上搭建一个服务器,然后在每台电脑上使用Socket连接到该服务器。一旦连接建立成功,这两台电脑就可以通过服务器来进行通信了。
以下是一个简单的示例代码,演示了如何在两台电脑之间进行通信。其中,192.168.1.100为服务器的IP地址。
在电脑A上运行的代码:
```
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
String serverAddress = "192.168.1.100"; // 服务器的IP地址
int serverPort = 8888; // 服务器的端口号
Socket socket = new Socket(serverAddress, serverPort); // 连接到服务器
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 读取服务器发来的消息
PrintWriter out = new PrintWriter(socket.getOutputStream(), true); // 向服务器发送消息
out.println("Hello, Server!"); // 向服务器发送消息
String response = in.readLine(); // 读取服务器发来的消息
System.out.println("Server: " + response); // 输出服务器发来的消息
}
}
```
在电脑B上运行的代码:
```
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
int portNumber = 8888; // 服务器的端口号
ServerSocket serverSocket = new ServerSocket(portNumber); // 监听端口
Socket clientSocket = serverSocket.accept(); // 等待客户端连接
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // 读取客户端发来的消息
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); // 向客户端发送消息
String request = in.readLine(); // 读取客户端发来的消息
System.out.println("Client: " + request); // 输出客户端发来的消息
out.println("Hello, Client!"); // 向客户端发送消息
}
}
```
在运行这两份代码之前,需要先在公网上搭建一个服务器,并将代码中的IP地址和端口号修改为服务器的地址和端口号。
阅读全文