![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подсчитать трафик определенного сайта
frEE)styler © (2006-01-23 16:48:00)Уважаемые мастера помогите реализовать процедуру чтобы возможно было подсчитывать трафик различных сайтов.
заранее спасибо!
Rouse_ (2006-01-26 21:39:00) [1]Прокси пишеться без компонентов. Но раз ассоциации только с компонентом, то IdMappedPort
frEE)styler (2006-01-26 17:37:00) [2]Подскажите какой компонент более приемлем для прокси....
для моих целей в принципе нужно просто пропускать через себя трафик и считать его по каждому хосту.
Rouse_ (2006-01-24 10:48:00) [3]
> спасибо за код. но он дает информацию об общем количестве
> потраченного трафика...
> а мне нужно знать сколько потратил я после посещения определенного
> сайта.
Сниффером смотри куда и как он лезет. Или пускай траффик через свой прокси, а на нем уже считай...
Корешь (2006-01-24 08:07:00) [4]Определись с задачей, стоит различать сайт и host(ip), на одном хосте(ip) может размещатся несколькой сайтов. Если хочешь считать трафик с хоста, то это подсчет пакетов и их размеров пришедших с заданного хоста, если тебя интересует http трафик, то тогда нужно делать прокси....
frEE)styler (2006-01-23 20:32:00) [5]спасибо за код. но он дает информацию об общем количестве потраченного трафика...
а мне нужно знать сколько потратил я после посещения определенного сайта.
т.е залез на один сайт программа начала считать трафик именного идущего с этого сайта и ни с каких других.
VirEx (2006-01-23 19:26:00) [6]
> [2] frEE)styler (23.01.06 19:13)
не правильно формулируешь, уже сто раз были сделаны различные ветки про ЭТО:)
у Rouse_ © как раз есть исходник, хотя лан, вот код:
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;
Table : tMibIfTable;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
h:THandle;
i,Size:integer;
buff:array [0..1024] of byte;
begin
h := LoadLibrary('IPHLPAPI.DLL'); //Загружаем библиотеку
if h = 0 then Exit;
@GetIfTable := GetProcAddress(h, 'GetIfTable');
Size:=SizeOf(Table);
GetIfTable(@Table, @Size, False );
memo1.Lines.Clear;
for i:=0 to Table.dwNumEntries-1 do begin
memo1.Lines.Add(Table.Table[i].bDescr);
memo1.Lines.Add(format('MAC: %d.%d.%d.%d.%d.%d.%d.%d.',
[Table.Table[i].bPhysAddr[0],
Table.Table[i].bPhysAddr[1],
Table.Table[i].bPhysAddr[2],
Table.Table[i].bPhysAddr[3],
Table.Table[i].bPhysAddr[4],
Table.Table[i].bPhysAddr[5],
Table.Table[i].bPhysAddr[6],
Table.Table[i].bPhysAddr[7]
]));
memo1.Lines.Add('in: '+inttostr(Table.Table[i].dwInOctets)+' byte');
memo1.Lines.Add('out: '+inttostr(Table.Table[i].dwOutOctets)+' byte');
memo1.Lines.Add('all: '+inttostr(Table.Table[i].dwInOctets+Table.Table[i].dwOutOctets)+' byte');
memo1.Lines.Add('');
end;
FreeLibrary(h);
end;
frEE)styler (2006-01-23 19:13:00) [7]ну видел программу трафик инспектор?
т.е мне нужно знать сколько я поратил трафика тех сайтов на которых был.
может я не так формулирую..
Rouse_ (2006-01-23 17:22:00) [8]А как ты себе это вообще представляешь?