Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список сетевых интерфейсов 
:(
    Опции темы
djmix777
Дата 12.7.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



Poseidon,  здрасте!
подскажите плииз, как сделать правильно следующее
вообщем ip выяснили у меня по коду без проблем всё получилось!
а как мне выводить скажем отдельно, чтобы и название интерфейса и мак адрес и ip,
дорустим по нажатию кнопки чтобы все интерфейсы загрузились в комбобокс и потом при выборе уже появлялась информация, перечисленная выше.

да и ещё один момент я хотел узнать как  выводить входящий и исходящий трафик
по данному интерфейсу и продолжительность подключения!!!

вот какой у меня вопрос! 

Спасибо заранее ОГРОМНОЕ, даже за уже предоставленную инфу, так сказать, ЛЁД тронулся!!!!! 

M
Snowy
Тема выделена из http://forum.vingrad.ru/index.php?showtopic=81077
 
PM MAIL   Вверх
Snowy
Дата 12.7.2006, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Нарисовал код получения информации по адаптерам:
Код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject); // при запуске составляем список адаптеров
    procedure ComboBox1Select(Sender: TObject); // При выборе, показываем инфу
  private
    procedure FindNetInt; // поиск адаптеров
    procedure GetIntInfo(Id: dword); // получить информацию об адаптере
  end;

var Form1: TForm1;

implementation

{$R *.dfm}

uses IPHLPAPI, IPHelper, WinSock;

procedure TForm1.FindNetInt;
var
 MibArr: IpHlpAPI.TMIBIfArray;
 i: integer;
begin
  Get_IfTableMIB(MibArr);
  if Length(MibArr)>0 then
    for i := Low(MIBArr) to High(MIBArr) do
      ComboBox1.Items.AddObject(MibArr[i].bDescr, Pointer(MibArr[i].dwIndex));
end;

procedure TForm1.GetIntInfo(Id: dword);
var
 MibArr: IpHlpAPI.TMIBIfArray;
 IPArr:  TMibIPAddrArray;
 i,a: integer;
 s: string;
begin
  Memo1.Clear;
  Get_IfTableMIB(MibArr);
  Get_IPAddrTableMIB(IPArr);
  if Length(MibArr)>0 then
    for i:=Low(MIBArr) to High(MIBArr) do
      if MibArr[i].dwIndex = Id then
      with Memo1.Lines do begin
        Add('Name: ' + MibArr[i].bDescr);
        Add('Speed: ' + IntToStr(MibArr[i].dwSpeed div 1000000) + 'Mbit/s');
        case MibArr[i].dwType of
          6: s := 'ETHERNET';
          23: s := 'PPP';
          24: s := 'LOOPBACK';
          9: s := 'TOKENRING';
          15: s := 'FDDI';
          28: s := 'SLIP';
        else s := 'OTHER';
        end;
        Add('Type: ' + s);
        s := 'Mac: ';
        for a := 0 to 7 do s := s + IntToHex(MibArr[i].bPhysAddr[a], 2) + '-';
        Add(Copy(s, 1, Length(s)-1));
        case MibArr[i].dwOperStatus of
          1: s := 'UNREACHABLE';
          2: s := 'DISCONNECTED';
          3: s := 'CONNECTING';
          4: s := 'CONNECTED';
          5: s := 'OPERATIONAL';
        else s := 'NON_OPERATIONAL';
        end;
        Add('Status: ' + s);
        for a := Low(IPArr) to High(IPArr) do
          if IPArr[a].dwIndex = MibArr[i].dwIndex then
            Add('IP:' + inet_ntoa(in_addr(IPArr[a].dwAddr)));
      end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FindNetInt;
end;

procedure TForm1.ComboBox1Select(Sender: TObject);
var i: integer;
begin
  Memo1.Clear;
  i := ComboBox1.ItemIndex;
  if i >= 0 then
    GetIntInfo(integer(ComboBox1.Items.Objects[i]));
end;

end.

Для работы потребуются модули IPHLPAPI и IPHelper.
Пришиваю к посту  

Присоединённый файл ( Кол-во скачиваний: 106 )
Присоединённый файл  iphlp.zip 9,97 Kb
PM MAIL   Вверх
djmix777
Дата 13.7.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



всё удачно прошло  smile !


Спасибо!

 ну вот честно не допёр я сам что надо события обозначить, 

всё идеально и инфа та самая, как бы сейчас сделать так чтобы он определяло если включено соединение, то сколько времени и какой трафик входящий и исходящий

на примере 
допустим подключён к инету ADSL модем, этому соединению присваивается при каждом подключении к серваку провайдера динамический IP 

и я хотел вести такой маленький учёт, прога постоянно запущена и следит за этим интерфейсом, 
если вышел модем в инет, время пошло, и пошёл трафик (вход и исход), закончилось соединение
пишет в лог файл эту инфу

вот что я бы хотел в конце сделать.

  
PM MAIL   Вверх
Snowy
Дата 13.7.2006, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



У MibArr[i] есть следующие поля с информацией о трафике:
Цитата

dwInOctets 
Specifies the number of octets of data received through this interface. 
dwInUcastPkts 
Specifies the number of unicast packets received through this interface. 
dwInNUcastPkts 
Specifies the number of non-unicast packets received through this interface. This includes broadcast and multicast packets. 
dwInDiscards 
Specifies the number of incoming packets that were discarded even though they did not have errors. 
dwInErrors 
Specifies the number of incoming packets that were discarded because of errors. 
dwInUnknownProtos 
Specifies the number of incoming packets that were discarded because the protocol was unknown. 
dwOutOctets 
Specifies the number of octets of data sent through this interface. 
dwOutUcastPkts 
Specifies the number of unicast packets sent through this interface. 
dwOutNUcastPkts 
Specifies the number of non-unicast packets sent through this interface. This includes broadcast and multicast packets. 
dwOutDiscards 
Specifies the number of outgoing packets that were discarded even though they did not have errors. 
dwOutErrors 
Specifies the number of outgoing packets that were discarded because of errors. 
dwOutQLen 
Specifies the output queue length.

Также посмотри программу NetTrafficMonitor: http://fullsource.nm.ru/files/sources/inte...trafmonitor.zip
Скорее всего там надёшь большую часть того, что тебе нужно.

Добавлено @ 11:24 
Полное описание полей MibArr[i] можно почитать здесь: http://msdn.microsoft.com/library/default....b/mib_ifrow.asp 
PM MAIL   Вверх
djmix777
Дата 13.7.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



спасибо огромное! сейчас погляжу!!!  smile  
PM MAIL   Вверх
djmix777
Дата 14.7.2006, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



блин, вот всё удачно, вроде как, но не мог найти где там инфу взять про то когда соединение законнектилось и расконнектилось. а как протестить текущую скорость соединения при соединении через ADSL модем, чем можно воспользоваться? 
 

Это сообщение отредактировал(а) djmix777 - 14.7.2006, 10:40
PM MAIL   Вверх
Snowy
Дата 14.7.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(djmix777 @  14.7.2006,  10:22 Найти цитируемый пост)
но не мог найти где там инфу взять про то когда соединение законнектилось и расконнектилось.
Цитата
dwLastChange
Specifies the length of time, in centaseconds (10^-2 sec), that elapsed between January 1, 1601, and the last change of the operational status of the interface (connection). The value rolls over after 2^32 centaseconds.


Цитата(djmix777 @  14.7.2006,  10:22 Найти цитируемый пост)
а как протестить текущую скорость соединения, чем можно воспользоваться?
Если скорость канала, то dwSpeen. Если текущую, то это уже отдельный вопрос.
Смотри поиском: http://forum.vingrad.ru/index.php?act=Sear...FC&skipped= 
PM MAIL   Вверх
djmix777
Дата 17.7.2006, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



посмотрел отдельные вопросики, что и говорить  ещё, не нашёл ответа, и даже потестить из возможного ничего не могу, потому как нет компоненты IDHTTP. на работе скачать не могу. позакрывали zip'ы, 


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

 
PM MAIL   Вверх
Snowy
Дата 17.7.2006, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



PM MAIL   Вверх
djmix777
Дата 18.7.2006, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 12.7.2006
Где: Россия

Репутация: нет
Всего: нет



Snowy
по скорости не получается, отложу пока с этим вопросом,
знаешь у меня вопрос следующий, есть дом. сетка, и есть пользователь, который через меня в инет выходит, вернее через мой комп smile
хочу сделать на дельфи чтобы я мог указывая порт смотреть какие он сайты открывает и на какие адреса шлёт письма и какого размера входящие и исходящие. понимаю что гемор и такое есть, допустим в файрволах и где нить ещё, но хочу сам попробовать сделать, ну почти сам. помоги плз

используя только стандартные компоненты можно сделать? 
PM MAIL   Вверх
Snowy
Дата 18.7.2006, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Это тебе нужно писать прокси.
Ставь Delphi7 или BDS2005 - там есть Indy.
В Indy есть всё для написание проксей. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0815 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.