【发布时间】:2011-11-10 03:53:33
【问题描述】:
我使用的是 Windows Server 2008,我的程序是 C++。 我在 while(true) 循环中使用 WinSock2 和 sendto() 来发送我的数据包。
代码如下:
while(true)
{
if(c == snd->max)
c = snd->min;
dest.sin_addr.S_un.S_addr = hosts[c];
iphead->destaddr = hosts[c];
sendto(s, castpacket, pktsz, 0, castdest, szsad);
++c;
}
我需要尽可能快地向我的主机 std::vector 中的尽可能多的 IP 发送尽可能多的数据。
我目前在i7 930服务器上运行,只能达到350Mbps左右。
我目前将我的程序分成 4 个线程,所有线程都运行 while 循环,并为每个线程分配不同的服务器。 添加更多线程或运行更多程序副本会导致吞吐量降低。
我正在运行另一个程序以侦听来自服务器的回复。我从主列表中获取服务器并将它们添加到我的阵列中。目前的问题是,全部看完都需要很长时间,我想定期检查一下。
我该如何优化我的程序/循环/在这里发送?
【问题讨论】:
-
数据包大小为 79 字节,包括 ethernet+ip+udp 头。我想发送更多的pps。
-
您需要我们的帮助来编写拒绝服务工具吗?
-
你误会了。它不是 DoS 工具,我的主机阵列中有很多服务器,每台服务器的速度
-
我似乎无法编辑我的其他评论:我有另一个程序正在运行,以侦听来自服务器的回复。我从主列表中获取服务器并将它们添加到我的阵列中。目前的问题是,全部看完的时间太长了,我想定期检查一下。
-
@Seth,好的,很抱歉怀疑你的意图。当我想到尽可能快地发送数据包时,首先想到的是 DOS。