Back to Blog

socket通信,TCP协议,有多个客户端,服务器怎么向指定IP及端口的客户端发送数据!

#socket#服务器#tcp

上述代码演示了 每当有新客户端接入时,服务器立即获得了该客户端的唯一端点(IP + 端口)。在实际系统中,通常会把 conn_fd 与对应的 IP、端口一起存入一个哈希表或数组,以便后续根据业务需求定位目标客户端。


2. 客户端未显式 bind 时系统随机分配本地端口

原始结论 2
如果不用 bind 直接 connect,系统分给客户端的端口是随机的。

在 TCP 客户端调用 connect 前,如果没有先调用 bind 为套接字指定本地 IP 与端口,内核会自动为其分配一个 临时(ephemeral)端口。该端口在系统的可用端口范围内随机挑选,确保不会与已有的本地端口冲突。此行为是 TCP 协议栈的默认实现,适用于大多数“短连接”场景,但在以下情况下需要手动 bind

  • 客户端希望使用固定的源端口(例如防火墙规则或协议约定)
  • 需要在同一台机器上同时建立多个到同一服务器的连接,而每个连接必须使用不同的源端口进行区分

手动 bind 的示例: