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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2011, 02:45   #11
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Сетевую активность можно отслеживать при помощи IpHelper и WMI. Ищи на MSDN.
maxionans вне форума Ответить с цитированием
Старый 19.05.2011, 22:07   #12
ИринаForeve
Пользователь
 
Аватар для ИринаForeve
 
Регистрация: 27.04.2009
Сообщений: 48
По умолчанию

у меня завал... можно ли как нибудь по IP через ping узнать имя домена?
и что вообще лучше выводит при сканировании адресов?
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if (adr1.Text<>'') and (adr2.Text<>'') then //начальный и конечный адрес
 begin
  if ping_ip(adr1.Text) then //посылка пинга
  begin
   with tv3.Items.Add do begin //если ответ есть, то вывожу
    Caption :=(IdIcmpClient1.Host);//адрес
SubItems.Add(IdIcmpClient1.ReplyStatus.FromIpAddress);//тут имя домена??? но как
    SubItems.Add(inttostr(IdIcmpClient1.ReplyStatus.TimeToLive));//не знаю зачем
    SubItems.Add(inttostr(IdIcmpClient1.ReplyStatus.MsRoundTripTime));//не знаю
  end;
  end
  else//если нет ответа
    with tv3.Items.Add do begin //то заполнение адреса и строк черточками
    Caption :=(IdIcmpClient1.Host);
    SubItems.Add('-');
    SubItems.Add('-');
    SubItems.Add('-');
  end;
 end;
end;
цикл еще не доделала, чтоб все адреса перебирать....
ИринаForeve вне форума Ответить с цитированием
Старый 20.05.2011, 00:40   #13
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Имя домена по ip можно узнать, например, так:
Код:
function IPAddrToName(IPAddr: string): string;
 var
   SockAddrIn: TSockAddrIn;
   HostEnt: PHostEnt;
   WSAData: TWSAData;
   begin
      WSAStartup($101, WSAData);
       SockAddrIn.sin_addr.s_addr:=inet_addr(PChar(IPAddr));
      HostEnt:=GetHostByAddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
      if HostEnt<>nil
          then Result:=StrPas(Hostent^.h_name)
         else Result:='';
   end;
Son Of Pain вне форума Ответить с цитированием
Старый 20.05.2011, 05:56   #14
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

цикл можно сделать так
из влепите 2 макс эдит с маской 000.000.000.000

далее берём

Код:
ip:=copy(maskedit1.text,1,12);
ip_na4alo:=strtoint(copy(maskedit1.text,13,3));
ip_konec:=strtoint(copy(maskedit2.text,13,3));
while ip_na4alo<>ip_konec do
begin
 ip:=copy(maskedit1.text,1,12);
 ip:=ip+ip_na4alo;
// код
ip_na4alo:=ip_na4alo+1;
end;
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)

Последний раз редактировалось BARNEY; 20.05.2011 в 06:28.
BARNEY вне форума Ответить с цитированием
Старый 20.05.2011, 19:01   #15
ИринаForeve
Пользователь
 
Аватар для ИринаForeve
 
Регистрация: 27.04.2009
Сообщений: 48
По умолчанию

Найдите ошибки в данной процедуре:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var n,s,e,k:string[3];
    n1,s1,e1,k1:string[3];
    ip_na4alo,ip_konec:integer;
    ip:string;
begin  //0
 n:=copy(adr1.Text, 1, 3);
 s:=copy(adr1.Text, 5, 3);
 e:=copy(adr1.Text, 9, 3);
 k:=copy(adr1.Text, 13, 3);
 n1:=copy(adr2.Text, 1, 3);
 s1:=copy(adr2.Text, 5, 3);
 e1:=copy(adr2.Text, 9, 3);
 k1:=copy(adr2.Text, 13, 3);
 if (n=n1) and (s=s1) and (e=e1) and (k<k1) then
 begin  //1
  if (strtoint(n)<=255) and (strtoint(n1)<=255) and (strtoint(s)<=255)
    and (strtoint(s1)<=255) and (strtoint(e1)<=255)
    and (strtoint(e)<=255) and (strtoint(k1)<=255)
    and (strtoint(k)<=255) then
 begin //2
 ip:=copy(adr1.text,1,12);
 ip_na4alo:=strtoint(copy(adr1.text,13,3));
 ip_konec:=strtoint(copy(adr2.text,13,3));
 while ip_na4alo<>(ip_konec+1) do
 begin
 ip:=copy(adr1.text,1,12);
 ip:=ip+inttostr(ip_na4alo);
 // код
  if ping_ip(ip) then //адрес овтетил
  begin //3
   with tv3.Items.Add do begin//4
    Caption :=(IdIcmpClient1.Host);
    SubItems.Add(inttostr(IdIcmpClient1.ReplyStatus.BytesReceived));
    SubItems.Add(inttostr(IdIcmpClient1.ReplyStatus.MsRoundTripTime));
    SubItems.Add(inttostr(IdIcmpClient1.ReplyStatus.TimeToLive));
  end;//4
  end  //3
  else    //адрес не отвечает
    with tv3.Items.Add do begin //5
    Caption :=(IdIcmpClient1.Host);
    SubItems.Add('n/a');
   end; //5
  ip_na4alo:=ip_na4alo+1;
 end;
  end;//2
 end//1
 else MessageDlg('Неверный диапазон адресов', mtError,[mbOk], 0);
end;  //0
Хотелось бы изменить, чтоб пинг выводил каждый адрес поочередно, как будто действие по таймеру, а он почему то их пачкой выводит...Подскажите если кто может

По поводу сообщений на форуме - вот в коде жирным операторы вручную выделяются?

Хотелось бы спросить у знающих. Каким методом сканирование можно назвать то что реализовано в данном модуле, я его прикрепляю, т.к. длинный код. Взяла его из программы "Сниффер", ну переделала под свою программу...
Вложения
Тип файла: rar Tracer.rar (1.1 Кб, 14 просмотров)

Последний раз редактировалось Stilet; 20.05.2011 в 21:43.
ИринаForeve вне форума Ответить с цитированием
Старый 20.05.2011, 22:27   #16
ИринаForeve
Пользователь
 
Аватар для ИринаForeve
 
Регистрация: 27.04.2009
Сообщений: 48
По умолчанию

не рабодает определение имени домена, подскажите почему?
если вместо "IdIcmpClient1.Host" - ставлю "edit1.text" (а в поле конечно адрес) то все работает...
Код:
if ping_ip(ip) then //адрес оветтил
  begin //3
   with tv3.Items.Add do begin//4
    Caption :=IdIcmpClient1.Host;
    SubItems.Add(IPAddrToName(IdIcmpClient1.Host);
    SubItems.Add(inttostr(IdIcmpClient1.ReplyStatus.BytesReceived));
    SubItems.Add(inttostr(IdIcmpClient1.ReplyStatus.MsRoundTripTime));
    SubItems.Add(inttostr(IdIcmpClient1.ReplyStatus.TimeToLive));
  end;//4
 end;//3

Последний раз редактировалось ИринаForeve; 20.05.2011 в 22:32.
ИринаForeve вне форума Ответить с цитированием
Старый 20.05.2011, 23:14   #17
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Вот мой тестовый снифер, может сразу прослушивать все интерфейсы на компьютере и выдает информацию: IP адрес исх и вх, порт,
размер пакета, TTL, Тип пакета, данные, может чем и поможет вам, написан на WinSocket. Прост в использовании создает под каждый сетевой интерфейс поток, не грузит систему
http://zalil.ru/31084610

А по поводу домена, не получиться его сразу определить, сниффер будет терять данные из-за этого определения либо тормозить, ему понадобится немного времени он будет на эту процедуру прерываться. Для определения нужно запускать допустим таймер и он уже перебирая полученные адреса например в листе не торопясь будет подставлять домен.

Последний раз редактировалось Aliens_wolfs; 21.05.2011 в 00:56.
Aliens_wolfs вне форума Ответить с цитированием
Старый 21.05.2011, 03:11   #18
ИринаForeve
Пользователь
 
Аватар для ИринаForeve
 
Регистрация: 27.04.2009
Сообщений: 48
По умолчанию

А кто подскажет процедуру для диапазона IP адресов для NetShare?
Всем спасибо огромное!
ИринаForeve вне форума Ответить с цитированием
Старый 21.05.2011, 13:49   #19
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Вот простенький пример как работать с диапазоном IP адресов
http://zalil.ru/31085959

Программа выдает из листа диапазонов, список IP адресов. Эту функцию можно применить в своих сетевых программах
Может этот пример вам чем нибудь поможет.

Последний раз редактировалось Aliens_wolfs; 21.05.2011 в 15:08.
Aliens_wolfs вне форума Ответить с цитированием
Старый 23.05.2011, 09:37   #20
ИринаForeve
Пользователь
 
Аватар для ИринаForeve
 
Регистрация: 27.04.2009
Сообщений: 48
По умолчанию

В общем программу сделала, ну конечно как получилось...слепила из того что было, но закину ее сюда, как проверят...а то сразу позориться не хочу
ИринаForeve вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка активности ячейки Solex Microsoft Office Excel 3 10.02.2010 06:27
Разработка "рабочего поля" программы сим. эл.схем (Delphi) WaruiOrochi Помощь студентам 4 28.11.2009 21:25
Протоколирование активности пользователя XPAiN Общие вопросы Delphi 4 17.04.2009 09:22
Про время активности форума goblinyara Свободное общение 4 22.01.2009 21:07