C/S通讯程序的实现

简介

C/S通讯程序是指客户端和服务器端之间通过网络进行通信的一种架构。在这种架构中,服务器端提供服务,客户端通过请求与服务器端进行通信并获取服务。

Java是一种广泛应用于网络编程的高级编程语言,可以用于实现C/S通讯程序。本文将介绍如何使用Java编写一个简单的C/S通讯程序,并提供代码示例。

服务器端实现

服务器端负责监听客户端的连接请求,并处理客户端发送的请求。

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        try {
            // 创建服务器套接字,监听指定端口
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("服务器启动,监听端口: 8888");

            while (true) {
                // 等待客户端连接
                Socket clientSocket = serverSocket.accept();
                System.out.println("客户端连接成功");

                // 处理客户端请求
                new Thread(() -> {
                    try {
                        // 获取输入流
                        InputStream inputStream = clientSocket.getInputStream();
                        byte[] buffer = new byte[1024];
                        int length = inputStream.read(buffer);

                        // 处理请求
                        String request = new String(buffer, 0, length);
                        System.out.println("接收到客户端请求: " + request);
                        String response = "服务器收到请求: " + request;

                        // 发送响应
                        OutputStream outputStream = clientSocket.getOutputStream();
                        outputStream.write(response.getBytes());
                        clientSocket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上代码创建了一个服务器套接字,并通过accept()方法等待客户端连接。一旦有客户端连接成功,就会启动一个新的线程来处理客户端的请求。在处理请求的线程中,首先获取客户端发送的请求,然后处理请求并向客户端发送响应。

客户端实现

客户端负责与服务器端建立连接,并发送请求并接收响应。

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class Client {
    public static void main(String[] args) {
        try {
            // 创建客户端套接字,连接服务器
            Socket socket = new Socket(InetAddress.getLocalHost(), 8888);
            System.out.println("连接服务器成功");

            // 发送请求
            String request = "Hello, Server!";
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write(request.getBytes());

            // 接收响应
            InputStream inputStream = socket.getInputStream();
            byte[] buffer = new byte[1024];
            int length = inputStream.read(buffer);
            String response = new String(buffer, 0, length);
            System.out.println("收到服务器响应: " + response);

            // 关闭套接字
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上代码创建了一个客户端套接字,并通过connect()方法连接服务器。连接成功后,向服务器发送请求,并接收服务器的响应。最后,关闭套接字。

总结

通过以上代码示例,我们可以看到简单的C/S通讯程序的实现步骤。服务器端通过监听套接字等待客户端连接,并在新的线程中处理客户端的请求。客户端通过连接套接字与服务器建立连接,并发送请求并接收响应。

C/S通讯程序可以应用于各种场景,如聊天程序、文件传输等。在实际开发中,可以根据需求对服务器端和客户端的代码进行扩展和优化,以满足具体需求。

以上是一个简单的C/S通讯程序的实现,希望对你理解和使用Java进行网络编程有所帮助。

旅行图

journey
    title C/S通讯程序的实现
    section 服务器端实现
    Server[创建服务器套接字]
    Server-->等待客户端连接
    Server-->新线程处理请求
    新线程处理请求-->接收请求
    新线程处理请求-->处理