Java Socket 网络编程:简单示例及代码详解

本文提供了一个简单的 Java Socket 网络编程示例,包括服务器端和客户端代码,详细解释了如何使用 Socket 进行网络通信,并展示了基本的操作流程。

服务器端代码

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

public class Server {
    public static void main(String[] args) {
        try {
            // 创建 ServerSocket 实例,监听 8888 端口
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println('服务器已启动,等待客户端连接...');

            // 等待客户端连接
            Socket socket = serverSocket.accept();
            System.out.println('客户端已连接,客户端地址:' + socket.getInetAddress() + ',客户端端口号:' + socket.getPort());

            // 获取输入流和输出流
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();

            // 读取客户端发送的数据
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String message = reader.readLine();
            System.out.println('客户端发送的消息:' + message);

            // 向客户端发送数据
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
            String response = '服务器已收到您的消息:' + message;
            writer.write(response);
            writer.newLine();
            writer.flush();
            System.out.println('向客户端发送的消息:' + response);

            // 关闭输入流、输出流和 Socket 连接
            reader.close();
            writer.close();
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端代码

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

public class Client {
    public static void main(String[] args) {
        try {
            // 创建 Socket 实例,连接服务器的 8888 端口
            Socket socket = new Socket('localhost', 8888);
            System.out.println('已连接到服务器,服务器地址:' + socket.getInetAddress() + ',服务器端口号:' + socket.getPort());

            // 获取输入流和输出流
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();

            // 向服务器发送数据
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
            String message = 'Hello, Server!';
            writer.write(message);
            writer.newLine();
            writer.flush();
            System.out.println('向服务器发送的消息:' + message);

            // 读取服务器发送的数据
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String response = reader.readLine();
            System.out.println('服务器发送的消息:' + response);

            // 关闭输入流、输出流和 Socket 连接
            reader.close();
            writer.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

输出结果

服务器已启动,等待客户端连接...
已连接到服务器,服务器地址:/127.0.0.1,服务器端口号:8888
客户端已连接,客户端地址:/127.0.0.1,客户端端口号:59152
客户端发送的消息:Hello, Server!
向客户端发送的消息:服务器已收到您的消息:Hello, Server!

代码说明:

  • 服务器端使用 ServerSocket 监听指定端口,等待客户端连接。
  • 客户端使用 Socket 连接服务器的指定端口。
  • 服务器和客户端通过 InputStreamOutputStream 进行数据交互。
  • 代码中使用了 BufferedReaderBufferedWriter 来简化输入输出操作。

注意:

  • 运行代码前需要确保服务器和客户端在同一网络环境下,并且服务器已经启动监听。
  • 可以修改代码中的 messageresponse 来测试不同的通信内容。

希望本文能够帮助您理解 Java Socket 网络编程的基本概念,并能够帮助您编写自己的网络应用程序。

Java Socket 网络编程:简单示例及代码详解

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

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