作为网络客户端,我想跟踪两个 TCP 连接的输入。两台服务器每秒发送几个数据包。与可用带宽相比,每个数据包的大小都很小。
理想情况下,我们希望从单个线程读取两个套接字以获得最佳延迟。我最初的计划是在循环中的每个连接上使用 ioctl(2) 中的
FIONREAD
,并且仅在数据可用时读取。还有其他选择吗? CPU 消耗与低延迟相比不太重要。
您想要使用以下 I/O 多路复用原语之一:
select()
; “在 Linux [...] 上,在不应阻塞的套接字上使用 O_NONBLOCK 可能更安全”poll()
epoll()
(Linux)