Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Почему мой UDP сканер дико грузит комп?

3.3K
20 октября 2006 года
DENIS451
38 / / 31.12.2004
Почему мой UDP "сканер" сильно грузит пороц? Кто шарит в UDP сокетах?

При первом запуске этой проги и начале сканирования мой проц AMD 64 3700+
грузится процентов на 70, притом сам процесс моей проги грузит только на 30%
остальное - системные процессы!

При повторном запуске сканирования, без перезапуска проги, процесс проги
потребляет уже 0% и системные процессы фактически тоже 0%!

Это все относится к сканированию одного сегмента из 254 айпишников,
когда же таких сегментов много, штук 25 (если изменить цикл сканирования)
то при повторных сканирования процесс моей проги потребляет уже не 0%
а в среднем 5%.

Вот скрин загрузок проца при двух сканированиях 25 сегментов


http://img220.imageshack.us/my.php?image=661ea7.jpg

очевидно что второе сканирование ещё и меньше времени занимает!

Эта прога написанна на Borland Developer Studio 2006 -> C++Builder
но у меня есть уже готовый релиз написанный на сокетах на C++ Builder 6
и там почти тоже самое наблюдается!

Кроме того если запустить прогу прям из BDS2006 то переодически вылазят
во время сканирования вылазят такие ошибки:

First chance exception at $7C81EB33. Exception class EIdSocketError with message 'Socket Error # 10054
Connection reset by peer.'. Process Project1.exe (3476)

Насчёт проги написанной на билдере 6 и не сокетах, я точно непомню, были там такие
ошибки или нет.

Отчего такое происходит?!! И как с этим бороться?

Например выделенный сервак 3D шутера работая с 32 клиентами в обе
стороны посылая по 100 пакетов в секунду каждому (и не 20 байт!)
грузит такой проц меньше 70%, а ведь пересылка пакетов это не самая главная
его задача!!!



Код:
//$$---- Form CPP ----
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
char ip[20] ;
for(int i = 1; i < 255; i++)
 {
 sprintf(ip,"%s%d","10.10.110.",i);
 Label1->Caption = ip;
 IdUDPServer1->SendBuffer(ip,27015,"яяяяinfostring\0",15);  
 ::Sleep(5);
 Application->ProcessMessages();
 IdUDPServer1->SendBuffer(ip,27015,"яяяяTSource Engine Query\0",25);
 ::Sleep(5);
 Application->ProcessMessages();
 }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::IdUDPServer1UDPRead(TObject *Sender, TStream *AData,
     TIdSocketHandle *ABinding)
{
char buff[300];
for(int i=0;i < AData->Size ;i++)
 {
 AData->ReadBuffer(&buff,sizeof(buff));
 if (buff == 0) {buff = '@';}
 }
buff[AData->Size] =  0;
Memo1->Lines->Add(buff);
Memo1->Lines->Add(ABinding->PeerIP);
Memo1->Lines->Add(ABinding->PeerPort);  
}
//---------------------------------------------------------------------------
3.3K
22 октября 2006 года
DENIS451
38 / / 31.12.2004
Оказывается прога работает почти идеально но ей мешала служба
"ForceWare Intelligent Application Manager (IAM)"
и фтп сервер Serv-U когда вырубаеш тока Serv-U загрузка проца
становится процентов 30 если вырубить тока службу 10..20%

Вобщем заменил я Serv-U на WarFtpd а службу вообще выключил
и всё стало нормально - загрузка проца 0%.

Какое взаимодействие может быть между Serv-U и прогой рассылающей
одинаковые UDP пакеты по разным адресам?!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог