Я использую Windows Server 2008, и моя программа на C ++.
Я использую WinSock2 и sendto () в цикле while (true) для отправки своих пакетов.
код вроде так:
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;
}
Мне нужно посылать как можно больше данных на столько IP-адресов в моем хосте std :: vector, насколько это возможно.
В настоящее время я работаю на сервере i7 930, и я могу достичь только 350 Мбит / с или около того.
В настоящее время я разделил свою программу на 4 потока, и все они выполняли цикл while с различными серверами, назначенными для каждого потока.
Добавление большего количества потоков или запуск большего количества копий программы приводит к снижению пропускной способности.
У меня есть другая программа, выполняющая прослушивание ответов с серверов. Я получаю серверы из основного списка и добавляю их в свой массив. На данный момент проблема в том, что все они проходят слишком долго, и я хочу регулярно их проверять.
Как именно я могу оптимизировать свою программу / цикл / отправку здесь?