我想知道就接受 N 个不同连接所需的侦听端口/服务器套接字的数量而言,所需的最小开销是多少,每个连接都使用在 IP 之上运行的不同传输协议,例如 TCP、SCTP、DCCP、UDP等等
当然,一种简单的方法是拥有 N 个独立的服务器套接字(每个都通过socket()
使用适当protocol
参数的调用创建),每个都侦听一个唯一的端口。但是,在同时使用多个协议的应用程序中实现这种方法会非常不方便,因为客户端需要知道多个服务器端口。此外,在一个对等应用程序中,每个协议只对等一次(使用相同的客户端),N 个服务器套接字中的每一个只接受一个(客户端)连接的事实看起来像是一个巨大的开销(N 个额外的引入套接字纯粹是为了处理到单个对等客户端的 N 个“真实”连接)。
是否有可能做得更好,例如通过减少侦听服务器套接字的数量和/或在同一端口上侦听?
(为简单起见,可以假设 N=2,一个连接是 TCP,另一个是 DCCP 或 UDP(请不要假设无连接通信,因为 DCCP 是面向连接的)。)
编辑:我对 N (客户端)连接不感兴趣,其文件描述符由 N 调用返回accept
。问题在于使这 N 个连接成为可能的额外开销(即必须至少有一个额外的服务器套接字来侦听传入连接)。