欢迎访问宙启技术站
智能推送

使用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类与服务器建立连接,并通过输入流和输出流与服务器进行通信。客户端从控制台读取用户输入的消息,并发送给服务器;服务器接收到消息后,打印并返回给客户端。客户端接收服务器返回的消息,并打印出来。

通过这个例子,可以实现简单的客户端和服务器之间的通信。需要注意的是,在实际的应用中,为了保证通信的稳定性和安全性,需要进行更多的处理和异常处理。