我创建了3个套接字(发送方套接字),使用UDP将数据发送到远程单个套接字。
我已将所有这3个发送方套接字绑定在同一个端口上。
这种绑定同一端口上所有3个发送方套接字的设计是否会降低发送数据包的吞吐效率?或者我应该为每个线程创建一个新端口和一个新套接字?我的目标是尽快发送数据包并使网络保持忙碌状态。
重要提示:我正在使用UDP套接字。与TCP套接字不同,它为每个子线程创建了不同的进程。
答案 0 :(得分:1)
我想不出为什么将多个套接字绑定到同一个端口会以某种方式影响发送效率的任何原因。由于您的CPU(可能)比网卡快得多,因此您的限制因素将是以太网硬件将数据推送到网络的速度,而不是其他任何内容。
当然唯一可靠的方法是两种方式尝试,看看你是否看到吞吐量有任何差异;但如果你这样做,我会感到惊讶。
(请注意,在发送UDP数据包时,重要的是不要尝试发送速度超过网卡可以传输它们的速度,否则内核只会丢弃UDP数据包,因为它在发送缓冲区中没有空间具体来说,您需要使用阻塞I / O发送(在这种情况下,send()调用将不会返回,直到内核有足够的发送缓冲区空间来发送您要求它发送的数据包),或者使用非阻塞I / O但只在UDP select()(或者poll()s或其他)写入时才发送数据包。否则你将得到一个惊人的快速“发送速率”,99%的数据包只发送到比特桶; ^))
答案 1 :(得分:0)
每个端口的套接字数量无关紧要。端口不是物理实体,并且没有带宽可以在用户之间进行划分。