Java Socket 网络编程:简单示例及设计思路

本文将使用 Java 语言实现一个简单的基于 Socket 的网络程序,并详细介绍其设计思路和实现细节。该程序包括服务端和客户端两部分,通过 TCP/IP 协议进行通信。

设计思路

  1. 服务端:

    • 创建 ServerSocket 对象,指定端口号,监听来自客户端的连接请求。
    • 当有客户端连接请求到达时,开启一个新的线程处理请求。
    • 线程中获取客户端的输入流和输出流,读取客户端发送的请求数据,并进行相应的处理。
    • 将处理结果写入输出流,返回给客户端。
    • 最后关闭输入流、输出流和 Socket 对象,释放资源。
  2. 客户端:

    • 创建 Socket 对象,指定服务端的 IP 地址和端口号,并连接服务端。
    • 获取输入流和输出流。
    • 向服务端发送数据请求。
    • 读取服务端返回的结果并输出。
    • 最后关闭输入流、输出流和 Socket 对象,释放资源。

代码示例

服务端代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
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('服务端已启动,等待客户端连接...');

            while (true) {
                Socket socket = serverSocket.accept();
                System.out.println('客户端连接成功,启动新线程处理请求...');
                new Thread(new ServerThread(socket)).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class ServerThread implements Runnable {
    private Socket socket;

    public ServerThread(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));

            String request = reader.readLine();
            System.out.println('客户端请求:' + request);

            String response = '请求已处理,返回结果:' + request.toUpperCase();
            writer.println(response);
            writer.flush();

            reader.close();
            writer.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

public class Client {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket('127.0.0.1', 8888);
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));

            String request = 'hello, server!';
            writer.println(request);
            writer.flush();

            String response = reader.readLine();
            System.out.println('服务端响应:' + response);

            reader.close();
            writer.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

编译结果

服务端已启动,等待客户端连接...
客户端连接成功,启动新线程处理请求...
客户端请求:hello, server!

本示例展示了一个简单的 Socket 网络编程案例,通过服务端和客户端之间的交互,实现了简单的消息传递功能。实际应用中,可以根据具体需求扩展功能,例如实现文件传输、数据查询等操作。

Java Socket 网络编程:简单示例及设计思路

原文地址: https://www.cveoy.top/t/topic/oX8z 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录