java网络编程之socket网络编程示例(服务器端/客户端)


当然,我可以为你提供一个简单的Java Socket网络编程示例,包括服务器端和客户端的基本实现。

### 服务器端代码

服务器端需要创建一个`ServerSocket`来监听指定端口上的连接请求,并接受来自客户端的连接。一旦接受到连接,它会创建一个新的线程来处理客户端的通信。


import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        int port = 12345; // 服务器端口号
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("服务器启动,监听端口:" + port);

            while (true) {
                Socket socket = serverSocket.accept(); // 接受客户端连接
                new Thread(() -> handleClient(socket)).start(); // 创建新线程处理连接
            }
        }
    }

    private static void handleClient(Socket socket) {
        try (BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
             PrintWriter out = new PrintWriter(socket.getOutputStream(), true)) {
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println("客户端: " + inputLine);
                out.println("服务器: 已收到你的消息");
                if ("exit".equalsIgnoreCase(inputLine)) {
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

### 客户端代码

客户端需要创建一个`Socket`来连接到服务器指定的IP地址和端口。一旦连接成功,客户端就可以向服务器发送消息并接收来自服务器的响应。


import java.io.*;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws IOException {
        String hostname = "localhost"; // 服务器地址
        int port = 12345; // 服务器端口号

        try (Socket socket = new Socket(hostname, port);
             PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
             BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {

            BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
            String userInput;

            System.out.println("输入消息(输入exit退出):");
            while ((userInput = stdIn.readLine()) != null) {
                out.println(userInput);
                if ("exit".equalsIgnoreCase(userInput)) {
                    break;
                }
                System.out.println("服务器响应: " + in.readLine());
            }
        }
    }
}

这段代码提供了一个基础的Socket网络编程示例。服务器端监听指定端口,等待客户端连接,并创建一个新线程来处理每个连接。客户端连接到服务器,发送消息并接收服务器的响应。你可以根据具体需求对这个示例进行修改和扩展。