Java 实例 – ServerSocket 和 Socket 通信实例

背景介绍

在计算机网络中,Socket 是一种可以进行网络通信的机制,它是一种抽象层,封装了底层的 TCP/IP 协议。Java 中的 Socket 类提供了一种方便的方式来使用 Socket 通信。在本文中,我们将介绍如何使用 Java 的 ServerSocket 和 Socket 类来实现简单的通信。

实现步骤

创建服务器

首先,我们需要创建一个服务器,使用 ServerSocket 类来监听客户端的请求。以下是一个简单的服务器实现:

try {
    ServerSocket serverSocket = new ServerSocket(9999);
    System.out.println("Server started...");

    while (true) {
        Socket socket = serverSocket.accept();
        System.out.println("New client connected...");

        // 处理客户端请求
    }
} catch (IOException e) {
    e.printStackTrace();
}

代码解析:

  • ServerSocket serverSocket = new ServerSocket(9999); 创建一个服务器 Socket,并绑定端口号为 9999。
  • Socket socket = serverSocket.accept(); 监听客户端的连接请求,并返回一个与客户端通信的 Socket 对象。
  • e.printStackTrace(); 打印异常信息。

处理客户端请求

在服务器接受到客户端的连接请求后,我们需要处理客户端的请求。以下是一个简单的处理请求的代码:

try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

    String message = reader.readLine();
    System.out.println("Received message: " + message);

    writer.println("Server response: " + message);
} catch (IOException e) {
    e.printStackTrace();
}

代码解析:

  • BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 创建一个读取客户端消息的 BufferedReader 对象。
  • PrintWriter writer = new PrintWriter(socket.getOutputStream(), true); 创建一个向客户端发送消息的 PrintWriter 对象。
  • String message = reader.readLine(); 读取客户端发送的消息。
  • writer.println("Server response: " + message); 向客户端发送响应消息。

创建客户端

我们还需要创建一个客户端,使用 Socket 类与服务器进行通信。以下是一个简单的客户端实现:

try {
    Socket socket = new Socket("localhost", 9999);
    System.out.println("Connected to server...");

    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

    writer.println("Hello, server!");

    String response = reader.readLine();
    System.out.println("Server response: " + response);
} catch (IOException e) {
    e.printStackTrace();
}

代码解析:

  • Socket socket = new Socket("localhost", 9999); 创建一个连接到服务器的 Socket 对象。
  • BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 创建一个读取服务器响应消息的 BufferedReader 对象。
  • PrintWriter writer = new PrintWriter(socket.getOutputStream(), true); 创建一个向服务器发送消息的 PrintWriter 对象。
  • writer.println("Hello, server!"); 向服务器发送消息。
  • String response = reader.readLine(); 读取服务器响应消息。
  • System.out.println("Server response: " + response); 打印服务器响应消息。

总结

在本文中,我们介绍了如何使用 Java 的 ServerSocket 和 Socket 类实现简单的通信。通过创建服务器、处理客户端请求和创建客户端,我们可以轻松地实现基于 Socket 的通信。

本文来源:词雅网

本文地址:https://www.ciyawang.com/o59nmw.html

本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。

相关推荐