地址重用的概念SO_REUSEADDR是套接字选项之一允许绑定处于TIME_WAIT状态的地址和端口。默认情况下操作系统会阻止绑定已被占用但尚未完全释放的地址通过设置该选项可绕过限制。适用场景服务器程序崩溃或重启后需立即重新绑定相同端口时避免因TIME_WAIT状态通常持续2MSL时间导致的地址占用问题。多播或广播应用中多个进程需绑定相同端口接收数据。技术实现在C语言中通过setsockopt函数设置int reuse 1; setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, reuse, sizeof(reuse));Python中通过socket模块实现import socket sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)与SO_REUSEPORT的区别SO_REUSEPORT允许完全并行的端口重用多个套接字可同时绑定相同地址和端口需Linux 3.9内核支持。而SO_REUSEADDR仅解决TIME_WAIT冲突问题不实现负载均衡。注意事项Windows系统下SO_REUSEADDR行为与Unix不同可能允许非特权用户绑定特权端口。UDP协议中使用时需注意多播数据包可能被多个套接字重复接收。底层原理TCP协议通过四次挥手关闭连接时主动关闭方会进入TIME_WAIT状态以防止延迟数据包干扰新连接。SO_REUSEADDR修改了内核的端口分配策略跳过状态检查直接绑定。share.cnbgluf.cn/Article/details/647062.HKMshare.lfrhsdk.cn/Article/details/482226.HKMshare.jvmsdkk.cn/Article/details/287010.HKMshare.jamwhkv.cn/Article/details/467261.HKMshare.wlncrof.cn/Article/details/665156.HKM