使用Java网络编程实现客户端和服务器的通信函数
发布时间:2023-08-29 01:28:26
在Java中,可以使用Socket类来实现客户端和服务器之间的通信。下面是一个示例代码,其中包含了一个客户端和一个服务器之间的简单通信函数。
### 服务器端代码:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(12345); // 创建服务器Socket,监听12345端口
System.out.println("服务器已启动,等待客户端连接...");
while (true) {
Socket clientSocket = serverSocket.accept(); // 等待客户端连接
System.out.println("客户端已连接,IP地址为:" + clientSocket.getInetAddress().getHostAddress());
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // 获取输入流,用于接收客户端消息
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); // 获取输出流,用于发送消息给客户端
String message;
while ((message = in.readLine()) != null) { // 循环接收客户端消息
System.out.println("客户端:" + message);
out.println("服务器已接收到消息:" + message); // 发送消息给客户端
}
in.close(); // 关闭输入流
out.close(); // 关闭输出流
clientSocket.close(); // 关闭客户端Socket
}
}
}
### 客户端代码:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 12345); // 创建客户端Socket,连接服务器(IP地址为127.0.0.1,端口为12345)
System.out.println("连接服务器成功!");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 获取输入流,用于接收服务器消息
PrintWriter out = new PrintWriter(socket.getOutputStream(), true); // 获取输出流,用于发送消息给服务器
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); // 从控制台读取用户输入
String message;
while ((message = reader.readLine()) != null) { // 循环发送消息到服务器
out.println(message); // 发送消息给服务器
String response = in.readLine(); // 读取服务器返回的消息
System.out.println("服务器:" + response);
}
in.close(); // 关闭输入流
out.close(); // 关闭输出流
socket.close(); // 关闭客户端Socket
}
}
在这个例子中,服务器端使用ServerSocket类监听12345端口,等待客户端连接。当有客户端连接时,服务器端会创建一个新的线程来处理该客户端的请求,并与该客户端建立通信。
客户端使用Socket类与服务器建立连接,并通过输入流和输出流与服务器进行通信。客户端从控制台读取用户输入的消息,并发送给服务器;服务器接收到消息后,打印并返回给客户端。客户端接收服务器返回的消息,并打印出来。
通过这个例子,可以实现简单的客户端和服务器之间的通信。需要注意的是,在实际的应用中,为了保证通信的稳定性和安全性,需要进行更多的处理和异常处理。
