Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2011, 21:16   #1
nikol_
Пользователь
 
Регистрация: 24.02.2011
Сообщений: 16
По умолчанию Перебор компьютеров сети. ТTсрClient и потоки

Здравствуйте.
Надо перебрать все компьютеры в сети и подключиться к ним по определенному порту.

Перебор находится в потоках. Сколько адресов, столько и потоков
Описание потока:
Код:
TCheckIP = class(tthread)
public
  Check_ip:string;
private
  procedure Answer;
protected
  procedure execute; override;
end;

procedure TCheckIP.Answer;
Begin
  Form1.Memo1.Lines.Append(Check_ip);
  Form1.Label1.Caption:=IntToStr(Form1.Memo1.Lines.Count);
end;

procedure TCheckIP.execute;
var TcpClient: TTcpClient;
begin
  TcpClient:=TTcpClient.Create(nil);
  try
    TcpClient.RemoteHost:=Check_ip;
    TcpClient.RemotePort:=PORT;
    TcpClient.BlockMode:=bmBlocking;

    if TcpClient.Connect then
      Synchronize(Answer);

  finally
    TcpClient.Disconnect;
    TcpClient.Free;
    Terminate;
  end;
end;
Запуск потоков:
Код:
procedure FindServer;
var addr:string;
    i: Integer;
    mIp: array[1..254] of TCheckIP;
begin
  addr:=Form1.TCPServer1.LocalHostAddr;
  addr:=AnsiReverseString(addr);
  delete(addr,1,Pos('.',addr)-1);
  addr:=AnsiReverseString(addr);
  
  for i:=1 to 254 do
    begin
      mIp[i]:=TCheckIP.Create(true);
      mIp[i].freeonterminate:=true;
      mIp[i].priority:=tpHigher;
      mIp[i].Check_ip:=addr+IntToStr(i);
      mIp[i].resume;
    end;
end;
Сервера находятся, проблем нет. Но на это, даже при использовании потоков, уходит 3-5 минут. Долго.
Что я делаю не так?

P.S.: Использовать можно только TTcpClient, TTcpServer.
Спасибо за внимание к вопросу.
nikol_ вне форума Ответить с цитированием
Старый 01.03.2011, 05:36   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

254 компа? Если из них хотя бы 10% выключены (или сервер не запущен), то 5 минут это ещё хорошо.

> Использовать можно только TTcpClient, TTcpServer.

ну и глупо.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мониторинг компьютеров в локальной сети maLoy*508 Операционные системы общие вопросы 3 02.12.2010 15:43
Поскажите как определить ip адреса компьютеров в сети и их имена?ов в SeЯgey Работа с сетью в Delphi 11 21.10.2010 20:47
Включение компьютеров по сети vlad.md Работа с сетью в Delphi 17 05.07.2010 15:47
мониторинг компьютеров в сети Riska Работа с сетью в Delphi 5 23.05.2010 20:41
Связь 2-х и более компьютеров в сети DOLBY Работа с сетью в Delphi 3 27.12.2007 09:39