套接字(Socket)

一、套接字的本质

套接字是网络驱动程序提供给应用程序的接口和通信机制,是应用程序与网络协议栈之间的桥梁,用于实现不同主机上应用程序的网络通信。

二、Java 中的网络通信类(均位于java.net包下)

Java 通过封装套接字相关类,简化了 TCP 和 UDP 协议的网络编程实现,核心类如下:

1. UDP 协议相关类

UDP 通信基于数据报,不分客户端和服务端,核心类为:

  • **DatagramSocket**:用于发送和接收 UDP 数据报的套接字,是 UDP 通信的端点。
  • **DatagramPacket**:用于封装 UDP 传输的数据(包含数据内容、源 / 目标地址和端口等信息),是 UDP 通信的数据载体。

2. TCP 协议相关类

TCP 通信基于连接,严格区分客户端和服务端,核心类为:

  • **ServerSocket**:仅用于服务端,负责监听指定端口,接收客户端的连接请求并建立连接。
  • **Socket**:主要用于客户端,也用于服务端接收到连接后生成的通信端点,通过它与对方进行数据传输(客户端通过Socket发起连接,服务端通过ServerSocket.accept()获取客户端对应的Socket)。

总结

协议 核心类 通信特点
UDP DatagramSocketDatagramPacket 无连接,不分客户端 / 服务端
TCP ServerSocket(服务端)、Socket(客户端及连接后端点) 面向连接,严格区分客户端 / 服务端