Java Socket 通讯 Demo 指南

作为一名初学者,了解和实现 Java 的 Socket 通讯是一个重要的技能。Socket 通讯允许两台计算机之间进行数据交换。本文将通过一个简单的示例教会你如何实现一个基本的 Java Socket 通讯 Demo。

1. 流程概述

实现 Java Socket 通讯的基本步骤可以总结如下:

步骤 描述
1 创建服务器端
2 创建客户端
3 服务器和客户端进行连接
4 交换数据
5 关闭连接

2. 每一步的实现

步骤1:创建服务器端

首先,我们需要创建一个服务器端。它将监听客户端的连接请求。

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

public class Server {
    public static void main(String[] args) {
        try {
            // 创建一个服务器套接字,端口为12345
            ServerSocket serverSocket = new ServerSocket(12345);
            System.out.println("服务器正在等待客户端连接...");

            // 接收连接
            Socket socket = serverSocket.accept();
            System.out.println("客户端连接成功!");

            // 数据输入输出流
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

            // 读取客户端发送的消息
            String message = in.readLine();
            System.out.println("收到客户端消息: " + message);

            // 发送回执
            out.println("消息已接收!");

            // 关闭连接
            in.close();
            out.close();
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

步骤2:创建客户端

接下来,我们需要创建一个客户端。它用来连接到服务器并向其发送数据。

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

public class Client {
    public static void main(String[] args) {
        try {
            // 创建与服务器的 Socket 连接,指定服务器地址和端口
            Socket socket = new Socket("localhost", 12345);
            System.out.println("成功连接到服务器!");

            // 数据输入输出流
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            // 向服务器发送消息
            out.println("你好,服务器!");

            // 读取服务器的回执消息
            String response = in.readLine();
            System.out.println("服务器回复: " + response);

            // 关闭连接
            out.close();
            in.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

步骤3:连接服务器

在服务器端代码中,调用 serverSocket.accept() 方法来等待客户端连接。一旦有客户端请求,它就会接受连接并返回一个 Socket 对象用于后续的数据交流。

步骤4:交换数据

在上面的代码中,服务器和客户端分别使用输入流和输出流进行数据的读取与发送。BufferedReader 用于从输入流中读取字符串,而 PrintWriter 则是用于向输出流发送字符串。

步骤5:关闭连接

使用后,务必关闭输入输出流以及 SocketServerSocket 连接,以便释放资源。

3. 关系图

为了更加清楚地理解 Socket 通讯的结构,我们可以使用 ER 图来表示整个过程。

erDiagram
    CLIENT {
        String message
        String response
    }
    SERVER {
        String receivedMessage
        String replyMessage
    }
    
    CLIENT ||--o| SERVER : connect
    CLIENT ||--o| SERVER : send
    SERVER ||--o| CLIENT : receive
    SERVER ||--o| CLIENT : reply

结论

通过以上步骤,我们已经完成了 Java Socket 通讯的基本 Demo。这一过程涉及了服务器端和客户端的创建、连接、数据交换及关闭连接等关键步骤。对于初学者来说,理解这些基本概念将为后续深入学习网络编程打下坚实基础。

祝你在 Java Socket 网络编程的学习之旅中取得好成绩!如果有任何进一步的问题,请随时询问。