Java Socket 使用基础与框架

在网络编程中,Java Socket 是一种基本的通信方法,可以帮助你建立客户端和服务器之间的连接。这篇文章将引导你实现一个简单的 Java Socket 应用程序,并提供相应的代码示例和详细的解释。

主要流程图

以下表格展示了实现一个简单的 Java Socket 程序的基本步骤。

步骤描述
1创建服务器端 Socket
2创建客户端 Socket
3服务器监听客户端请求
4客户端向服务器发送消息
5服务器接收并处理客户端请求
6双方关闭Socket连接

每一步的详细说明

1. 创建服务器端 Socket

服务器端负责监听客户端的连接请求。我们将使用 ServerSocket 类来创建服务器端 Socket。

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

public class Server {
    public static void main(String[] args) {
        try {
            // 创建一个绑定在端口12345的ServerSocket实例
            ServerSocket serverSocket = new ServerSocket(12345);
            System.out.println("服务器已启动,等待连接...");
            
            // 不断接受客户端连接
            while (true) {
                // 监听客户端连接
                Socket socket = serverSocket.accept();
                System.out.println("客户端已连接:" + socket.getInetAddress().getHostAddress());
                
                // 创建输入流读取客户端消息
                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                // 接收消息并打印
                String message = in.readLine();
                System.out.println("接收到消息:" + message);
                
                // 关闭 socket
                in.close();
                socket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
2. 创建客户端 Socket

客户端需要创建一个 Socket 以连接到服务器。

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

public class Client {
    public static void main(String[] args) {
        try {
            // 创建与服务器的Socket连接,端口为12345
            Socket socket = new Socket("localhost", 12345);
            // 创建输出流,将消息发送到服务器
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            // 发送一条消息
            out.println("你好,服务器!");
            
            // 关闭输出流和socket
            out.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
3. 服务器监听客户端请求

在服务器的 while 循环中,serverSocket.accept() 方法将阻塞并等待客户端的连接,一旦有连接请求,服务器会继续执行并处理请求。

4. 客户端向服务器发送消息

在客户端代码中,我们创建了一个 PrintWriter 对象来发送消息,使用 println 方法将消息发送给服务器。

5. 服务器接收并处理请求

服务器端通过 BufferedReader 实例化来读取输入流,这样就可以接收客户端发送的消息并将其输出到控制台。

6. 双方关闭 Socket 连接

在数据传输结束后,客户端和服务器都会使用 close() 方法关闭各自的 Socket 连接,以释放资源。

结尾

通过上述步骤,我们实现了一个简单的 Java Socket 应用程序。你可以运行服务器代码后,再运行客户端代码,观察两者之间的互动。在实际应用中,可能还会涉及到多线程处理、异常管理等更复杂的情况,但这个示例为你提供了一个良好的入门基础。希望这些信息对你学习 Java 网络编程有所帮助!如有疑问,请随时提问。