Форум: "Сети";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизИндикатор загрузки сети Найти похожие ветки
← →
pipll © (2004-12-11 01:43) [0]Мастера, подскажите как реализовать сабж?
← →
Piter © (2004-12-11 02:33) [1]что ты подразуемваешь под загрузкой сети?
← →
pipll © (2004-12-11 03:59) [2]Использование в процентах (как в XP диспетчер задач показывает)
← →
Piter © (2004-12-11 11:50) [3]У меня w2k - вроде ничего про сеть не показывает.
А что XP подразумевает под загрузкой сети?
← →
Biryk (2004-12-11 17:06) [4]Posishi statyu pro Monitoring seti (podklucheny), tam v primere est sposob realizacii proverki zakgruzhenosti (vividit spisok vseh adapterov (realnih i virtualnih)) i ihniy trafik
← →
pipll © (2004-12-11 18:39) [5]А что XP подразумевает под загрузкой сети?
Под загрузкой сети понимается отношение объема всего трафика, проходящего ч\з сетевуху к пропускной способности сети
← →
Piter © (2004-12-11 18:53) [6]pipll © (11.12.04 18:39) [5]
к пропускной способности сети
а что понимается под пропускной способностью сети?
← →
pipll © (2004-12-11 18:56) [7]1000 Mb/sec, 100 Mb/sec, 10 Mb/sec
← →
Biryk (2004-12-11 19:33) [8]Vi poishite tu statyu tam vse est krasivo zdelano
← →
Piter © (2004-12-12 00:59) [9]pipll © (11.12.04 18:56) [7]
1000 Mb/sec, 100 Mb/sec, 10 Mb/sec
я понимаю, но откуда ее берут? Или выбирают любое значение рандомом? Как можно определить - какая пропускная способность у сети?
← →
Anatoly Podgoretsky © (2004-12-12 01:02) [10]Piter © (12.12.04 00:59) [9]
Наведи мыщку на иконку сетевого соединения и увидишь.
← →
123 © (2004-12-12 02:18) [11]Anatoly Podgoretsky © (12.12.04 01:02) [10]
Подключение по локальной сети
Скорость: ...
Отправлено: ...
Получено: ...
Где тут эта приславутая "загрузка сети"?
Я тоже никак не могу понять, что требует автор ветки...
← →
Piter © (2004-12-12 02:40) [12]Anatoly Podgoretsky © (12.12.04 1:02) [10]
Наведи мыщку на иконку сетевого соединения и увидишь.
ничего не вижу
← →
-=SS=- © (2004-12-12 12:35) [13]Возможно это поможет
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
lvTraffic: TListView;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TMibIfRow = packed record
wszName : array[0..255] of WideChar;
dwIndex : DWORD;
dwType : DWORD;
dwMtu : DWORD;
dwSpeed : DWORD;
dwPhysAddrLen : DWORD;
bPhysAddr : array[0..7] of Byte;
dwAdminStatus : DWORD;
dwOperStatus : DWORD;
dwLastChange : DWORD;
dwInOctets : DWORD;
dwInUcastPkts : DWORD;
dwInNUCastPkts : DWORD;
dwInDiscards : DWORD;
dwInErrors : DWORD;
dwInUnknownProtos : DWORD;
dwOutOctets : DWORD;
dwOutUCastPkts : DWORD;
dwOutNUCastPkts : DWORD;
dwOutDiscards : DWORD;
dwOutErrors : DWORD;
dwOutQLen : DWORD;
dwDescrLen : DWORD;
bDescr : array[0..255] of Char;
end;
TMibIfArray = array [0..512] of TMibIfRow;
PMibIfRow = ^TMibIfRow;
PmibIfArray = ^TmibIfArray;
type
TMibIfTable = packed record
dwNumEntries : DWORD;
Table : TMibIfArray;
end;
PMibIfTable = ^ TMibIfTable;
var
Form1: TForm1;
GetIfTable:function( pIfTable: PMibIfTable;
pdwSize : PULONG;
bOrder : Boolean ): DWORD; stdcall;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
type TMAC = array [0..7] of Byte;
//В качестве первого значения массив, второе значение, размер данных в массиве
function GetMAC(Value: TMAC; Length: DWORD): String;
var
i: Integer;
begin
if Length = 0 then Result := "00-00-00-00-00-00" else
begin
Result := "";
for i:= 0 to Length -2 do
Result := Result + IntToHex(Value[i],2)+"-";
Result := Result + IntToHex(Value[Length-1],2);
end;
end;
//Сама процедура
var
FLibHandle : THandle;
Table : TMibIfTable;
i : Integer;
Size : Integer;
begin
Timer1.Enabled := False; //Приостанавливаем на всякий случай таймер
lvTraffic.Items.BeginUpdate;
lvTraffic.Items.Clear; //Очищаем список
FLibHandle := LoadLibrary("IPHLPAPI.DLL"); //Загружаем библиотеку
if FLibHandle = 0 then Exit;
@GetIfTable := GetProcAddress(FLibHandle, "GetIfTable");
if not Assigned(GetIfTable) then
begin
FreeLibrary(FLibHandle);
Close;
end;
Size := SizeOf(Table);
if GetIfTable(@Table, @Size, False ) = 0 then //Выполняем функцию
I:=0;
// for i:= 0 to Table.dwNumEntries-1 do
begin
with lvTraffic.Items.Add do
begin //Выводим результаты
Caption := String(Table.Table[i].bDescr); //Наименование интерфейса
SubItems.Add(GetMAC(TMAC(Table.Table[i].bPhysAddr),
Table.Table[i].dwPhysAddrLen)); //MAC адрес
SubItems.Add(IntToStr(Table.Table[i].dwInOctets)); //Всего принято байт
SubItems.Add(IntToStr(Table.Table[i].dwOutOctets)); //Всего отправлено байт
SubItems.Add(IntToStr(Table.Table[i].dwSpeed));
SubItems.Add(IntToStr(Table.Table[i].dwInErrors));
end;
end;
lvTraffic.Items.EndUpdate;
FreeLibrary(FLibHandle);
Timer1.Enabled := True; //Не забываем активировать таймер
end;
end.
← →
Anatoly Podgoretsky © (2004-12-12 12:49) [14]123 © (12.12.04 02:18) [11]
Речь про скорость сетевого соединения, оно определяется сетевым адаптером.
Piter © (12.12.04 02:40) [12]
Установи Windows XP
← →
Anatoly Podgoretsky © (2004-12-12 12:50) [15]pipll © (11.12.04 03:59) [2]
Показывает проценты от максимальной скорости для данного сетевого соединения.
← →
Piter © (2004-12-12 12:53) [16]Anatoly Podgoretsky © (12.12.04 12:49) [14]
Установи Windows XP
ну вот еще...
← →
Anatoly Podgoretsky © (2004-12-12 12:59) [17]pipll © (11.12.04 01:43)
Копать надо в сторону PerformanceCounters из реестра, какие конкретно ключи не помню. В Вин98 ресстре эти ветки видны в через RegEdit, на ХР они скрыты, но доступны программно.
← →
Anatoly Podgoretsky © (2004-12-12 13:00) [18]Piter © (12.12.04 12:53) [16]
Тогда внимательно читаем вопрос и смотрим Индикатор загрузки сети [D7, WinXP] и не пытаемся применять это к другим ОС.
← →
Anatoly Podgoretsky © (2004-12-12 13:05) [19]Anatoly Podgoretsky © (12.12.04 12:59) [17]
Находятся в секции HKEY_PERFORMANCE_DATA или HKEY_DYN_DATA
Можно получить список всех ключей этих секции и списки параметров по каждому из ключей, дальше будет понятно по названиям, кроме того надо смотреть по функциям АПИ - там есть функции сброса и считывания счетчиков. У меня гдето ранее валялся код, но найти я его не смогу.
← →
Ryan (2004-12-12 14:45) [20]HQUERY hQuery;
HCOUNTER phCounter;
PDH_FMT_COUNTERVALUE *lpItemBuffer;
PDH_STATUS pdh;
lpItemBuffer = (PDH_FMT_COUNTERVALUE *) GlobalAlloc
(GPTR, sizeof(PDH_FMT_COUNTERVALUE));
pdh = PdhOpenQuery(NULL,11,&hQuery);
if (pdh == ERROR_SUCCESS) {
char * szCounter = "\\Network Interface\\Bytes total/sec";
pdh = PdhAddCounter(hQuery, szCounter, 0, &phCounter);
}
А потом вызовом
pdh = PdhCollectQueryData(hQuery);
pdh = PdhGetFormattedCounterValue (phCounter,
PDH_FMT_DOUBLE,
NULL,
lpItemBuffer);
if (pdh == ERROR_SUCCESS)
ShowMessage(FloatToStr(lpItemBuffer->doubleValue));
можно получать данные о текущей скорости.
А пропускную способность адаптера можно получить из счетчика "Current Bandwidth"
PS.
Код приблизительный, так что ...
Извиняюсь за С++, просто кажется в дельфи я не обнаружил заголовков для PDH
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.057 c