Java Socket 编程
Socket 是网络编程的核心,用于实现客户端和服务器之间的通信。理解 Socket 的使用是进行网络应用开发的关键。本章将详细介绍 Java 中的 Socket 编程。
Socket 构造与连接
创建 Socket
创建客户端 Socket:
import java.net.Socket;
import java.net.InetSocketAddress;
// 方式 1:直接连接
Socket socket = new Socket("localhost", 8080);
// 方式 2:先创建,后连接
Socket socket2 = new Socket();
socket2.connect(new InetSocketAddress("localhost", 8080));
// 方式 3:指定超时
Socket socket3 = new Socket();
socket3.connect(new InetSocketAddress("localhost", 8080), 5000); // 5 秒超时
Socket 配置
Socket socket = new Socket("localhost", 8080);
// 设置超时
socket.setSoTimeout(3000); // 读写超时 3 秒
// 设置 TCP 选项
socket.setTcpNoDelay(true); // 禁用 Nagle 算法
socket.setKeepAlive(true); // 保持连接
socket.setReuseAddress(true); // 重用地址
// 获取本地和远程地址
InetAddress localAddress = socket.getLocalAddress();
int localPort = socket.getLocalPort();
InetAddress remoteAddress = socket.getRemoteSocketAddress();
int remotePort = socket.getPort();
创建 ServerSocket
创建服务器 Socket:
import java.net.ServerSocket;
// 创建服务器套接字
ServerSocket serverSocket = new ServerSocket(8080);
// 指定 backlog(等待队列长度)
ServerSocket serverSocket2 = new ServerSocket(8080, 50);
// 绑定到指定地址
ServerSocket serverSocket3 = new ServerSocket();
serverSocket3.bind(new InetSocketAddress("localhost", 8080));