Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

Трафик   Найти похожие ветки 

 
Uiop   (2007-01-19 20:03) [0]

Проблема: нужно подсчитать выходящий трафик. Подскажите пож что юзать. Если б кто дал ссылку на компонент то ваще халява) Заранее спс.


 
Eraser ©   (2007-01-19 20:41) [1]

> [0] Uiop   (19.01.07 20:03)

почитай стати на этом сайте, так оно есть.


 
Орион ©   (2007-01-20 09:37) [2]

жажда халявы когда-нибудь доведет вас до нищеты (с) чей-то


 
_SuN_   (2007-01-22 04:26) [3]

unit mnetstat;

interface

uses Windows;

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;
    TMibIfTable = packed record
                   dwNumEntries : DWORD;
                   Table        : TMibIfArray;
                  end;
    PMibIfTable = ^TMibIfTable;

function IsConnectedToInternet: Boolean;
function GetTraffic (var InTraff : DWORD; var OutTraff : dword; index : byte) : longint;
function GetTraffic_dyn (var InTraff : DWORD; var OutTraff : dword) : longint;
function GetIfTable (pIfTable: PMibIfTable; pdwSize: PULONG; bOrder: Boolean ): DWORD; stdcall; external "IPHLPAPI.DLL" name "GetIfTable";
function GetConnectionsCount : byte;
function GetCSpeed (index : byte) : integer;
function GetCSInf (index : byte) : string;

implementation

uses WinSock, WinInet, sysutils;

function IsConnectedToInternet : Boolean;
var dwConnectionTypes : DWORD;
begin
dwConnectionTypes:=INTERNET_CONNECTION_MODEM+INTERNET_CONNECTION_LAN+INTERNET_CONNECTION_PROXY;
Result:=InternetGetConnectedState (@dwConnectionTypes, 0);
end;

function GetCSInf (index : byte) : string;
var Table : TMibIfTable;
   Size  : Integer;
begin
result:="0 (0/0)";
if (not(IsConnectedToInternet))
   then exit;
Size:=SizeOf(Table);
if (GetIfTable(@Table,@Size,False)=0)
   then result:="SPD:"+inttostr(Table.Table[index].dwSpeed)+"  PKTS:"+inttostr(Table.Table[index].dwInUcastPkts+Table.Table[index].dwInNUCastPkts)+"/"+inttostr(Table.Table[index].dwOutUcastPkts+Table.Table[index].dwOutNUCastPkts);
end;

function GetCSpeed (index : byte) : integer;
var Table : TMibIfTable;
   Size  : Integer;
begin
result:=0;
if (not(IsConnectedToInternet))
   then exit;
Size:=SizeOf(Table);
if (GetIfTable(@Table,@Size,False)=0)
   then result:=Table.Table[index].dwSpeed;
end;

function GetTraffic (var InTraff : DWORD; var OutTraff : dword; index : byte) : longint;
var Table : TMibIfTable;
   Size  : Integer;
begin
result:=0;
intraff:=0;
outtraff:=0;
if (not(IsConnectedToInternet))
   then exit;
Size:=SizeOf(Table);
if (GetIfTable(@Table,@Size,False)=0)
   then begin
         intraff:=Table.Table[index].dwInOctets;
         outtraff:=Table.Table[index].dwOutOctets;
         result:=intraff+outtraff;
        end;
end;

function GetConnectionsCount : byte;
var Table : TMibIfTable;
   Size  : Integer;
begin
result:=0;
Size:=SizeOf(Table);
if (GetIfTable(@Table,@Size,False)=0)
   then result:=table.dwNumEntries;
end;

function GetTraffic_dyn (var InTraff : DWORD; var OutTraff : dword) : longint;
var GetIfTable : function (pIfTable: PMibIfTable; pdwSize: PULONG; bOrder: Boolean ): DWORD; stdcall;
   H          : THandle;
   Table      : TMibIfTable;
   Size       : Integer;
begin
result:=0;
intraff:=0;
outtraff:=0;
if (not(IsConnectedToInternet))
   then exit;
H:=LoadLibrary("IPHLPAPI.DLL");
if (H=0)
   then Exit;
@GetIfTable:=GetProcAddress(H,"GetIfTable");
if (not(Assigned(GetIfTable)))
   then begin
         FreeLibrary(H);
         exit;
        end;
Size:=SizeOf(Table);
if (GetIfTable(@Table,@Size,False)=0)
   then begin
         intraff:=Table.Table[0].dwInOctets;
         outtraff:=Table.Table[0].dwOutOctets;
         result:=intraff+outtraff;
        end;
FreeLibrary(H);
end;

end.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.099 c
2-1187689604
em240
2007-08-21 13:46
2007.09.16
Обработка результата нажатия кнопки


2-1187721247
malyar
2007-08-21 22:34
2007.09.16
indiclient.lastcmdresult


2-1187593110
max_
2007-08-20 10:58
2007.09.16
2-ух мерные диннамические массивы


1-1183951734
Dr. Andrew
2007-07-09 07:28
2007.09.16
Как эмулировать показ hint нажатием, например, button на форме?


11-1170010850
gok5
2007-01-28 22:00
2007.09.16
How to convert this screenshot function ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский