由于我不知道您的应用程序除了发送和接收之外还执行什么操作,因此很难知道还有什么可能限制它,但这里有一些可以尝试的事情。我假设您使用的是 IPv4,而我不是 Windows 程序员。
当您使用可靠的连接时,最大化您发送的数据包大小。对于 100 mbs 以太网,最大数据包为 1518 个,以太网使用其中的 18 个,IPv4 使用 20-64 个(通常认为是 20 个),UDP 使用 8 个字节。这意味着通常您应该能够发送每个数据包 1472 字节的 UDP 有效负载。
如果您使用支持它的千兆位以太网设备,您的数据包大小会增加到 9000 字节(巨型帧),因此发送接近该大小的数据应该会加快速度。
如果您要从侦听器向发送器发送任何确认,请尝试确保它们很少发送,并且一次可以确认多个数据包。尽量让听者不必说太多,并尽量让发送者不必等待听者允许继续发送。
在发送方应用程序所在的计算机上,考虑为接收方所在的计算机设置静态 ARP 条目。如果没有此功能,每隔几秒可能会暂停一次,同时发出新的 ARP 请求以确保 ARP 缓存是最新的。某些 ARP 实现可能会在 ARP 条目过期之前很好地执行此请求,这会减少影响,但有些则不会。
关闭尽可能多的网络用户。如果您使用的是以太网交换机,那么您应该专注于那些会向/来自您的应用程序驻留/使用的计算机/网络设备引入流量的事情(这包括广播消息,如许多 ARP 请求)。如果它是一个集线器,那么您可能需要让整个网络安静下来。Windows 往往会向网络发送源源不断的垃圾流,这在许多情况下是没有用的。
一个应用程序或用户可以拥有的网络带宽可能会受到限制。或者操作系统允许其自行使用的网络带宽可能会受到限制。如果存在的话,可以在注册表中更改它们。
网络接口芯片实际上始终不支持网络的最大带宽的情况并不罕见。有些芯片可能会丢失数据包,因为它们正忙于处理先前的数据包,而有些芯片则无法像以太网规范所允许的那样紧密地发送数据包。此外,即使是这样,系统的其余部分也可能无法跟上。