tion:= IP: + inet_ntoa (PInAddr (p.h_addr_list ^) ^) ;;;
//повертає IP адресLocalIP: string;=array [0..10] of PInAddr;=^ TaPInAddr;: PHostEnt;: PaPInAddr;: array [0..63] of char;: Integer ;: TWSADATA; ($ 101, GInitData);:= raquo ;; (Buffer, SizeOf (Buffer));:=GetHostByName (buffer); phe=nil then Exit;:=PaPInAddr (Phe ^ .h_addr_list) ;: =0; pptr ^ [i] lt; gt; nil do:=StrPas (inet_ntoa (pptr ^ [i] ^)); (i) ;;;; TForm1.FormCreate (Sender: TObject) ;. Caption:= laquo ; Local IP: + LocalIP ;; TForm1.Button4Click (Sender: TObject) ;: TWSAData ;: array [0..255] of char ;: PHostEnt ;: PChar; ($ +0101, wsdata); (hostName, sizeof (hostName));(hostName,Edit4.Text);:=GetHostByName(hostName);Assigned(hostEnt)Assigned(hostEnt^.h_addr_list):=hostEnt^.h_addr_list^;Assigned(addr).Caption:=Format(laquo;%d.%d.%d.%draquo;,[byte(addr[0]),(addr[1]),byte(addr[2]),byte(addr[3])]);;;;;;TForm1.Label6DblClick(Sender: TObject) ;. Text:=Label6.Caption ;; TForm1.Label9DblClick (Sender: TObject) ;. Text:=Label9.Caption ;; IPAddrToCompName (IPAddr: string): string ;: TSockAddrIn ;: PHostEnt ;: TWSAData; ($ 101 , WSAData) ;. sin_addr.s_addr:=inet_addr (PChar (IPAddr));:=gethostbyaddr (@ SockAddrIn.sin_addr.S_addr, 4, AF_INET);HostEntlt;gt;nilResult:=StrPas(Hostent^.h_name)Result:=laquo;raquo;;;TForm1.Button5Click(Sender: TObject) ;. Caption:= Name: + IPAddrToCompName (Edit5.Text) ;; TForm1.Label11DblClick (Sender: TObject) ;. Text:=Label11.Caption ;;
//////////////////////////////////// Трафік=packed record: array [0..255] of WideChar ;: DWORD;
dwType: DWORD ;: DWORD ;: DWORD;// Визначає поточну швидкість передавання даних в секунду: DWORD ;: array [0..7] of Byte;// Містить фізичну адресу інтерфейсу (якщо простіше то його, трохи видозмінений, МАС адреса)
dwAdminStatus: DWORD ;: DWORD ;: DWORD;
dwInOctets: DWORD;// Містить кількість байт прийнятих через інтерфейс
dwInUcastPkts: DWORD ;: DWORD ;: DWORD ;: DWORD ;: DWORD ;: DWORD;// Містить кількість байт відправлених інтерфейсом: DWORD ;: DWORD ;: DWORD ;: DWORD ;: DWORD ;: DWORD ;: array [0..255] of Char;// Cодержит опис інтерфейсу;=array [0..512] of TMibIfRow;=^ TMibIfRow;=^ TMibIfArray;=packed record: DWORD ;: TMibIfArray ;;=^ TMibIfTable;: function (pIfTable: PMibIfTable; pdwSize: PULONG;:Boolean): DWORD; stdcall;
//////////////////////////////////// ІнтерфейсиWSAIoctl (s: TSocket; cmd: DWORD; lpInBuffer: PCHAR; dwInBufferLen:;: PCHAR; dwOutBufferLen: DWORD ;: LPDWORD ;: POINTER ;: POINTER): integer; stdcall; external WS2_32.DLL raquo ;; _ GET_INTERFACE_LIST=$ 4004747F; _UP=$ 00000001; _BROADCAST=$ 00000002; _LOOPBACK=$ 00000004; _POINTTOPOINT=$ 00000008; _MULTICAST=$ 00000010; _gen=packed record: sockaddr_in ;: packed array [0..7] of char ;; _ INFO=packed record: u_long;// Прапори інтерфейсу: sockaddr_gen;// Адреса інтерфейсу: sockaddr_gen;// Broadcast адреса: sockaddr_gen;// Маска підмережі; EnumInterfaces (var sInt: string): Boolean ;: TSocket ;: WSADATA ;: Integer ;: u_long ;: SOCKADDR_IN ;: PChar ;: pointer ;: array [0..20] of INTERFACE_INFO ;: integer; :=true;// Ініціалізіруем змінну:= raquo ;; ($ +0101, wsaD);// Запускаємо WinSock
//тут можна дабавіть різні обробники помилки
s:=Socket (AF_INET, SOCK_STREAM, 0);// Відкриваємо сокет (s=INVALID_SOCKET) Exit;
try//викликаємо WSAIoCtl:=@ bytesReturned;
if (WSAIoCtl (s, SIO_GET_INTERFACE_LIST, nil, 0,Buffer,
, PtrA, nil, nil) lt; gt; SOCKET_ERROR)
then//якщо OK, то визначаємо кількість існуючих інтерфейсів
NumInterfaces:=BytesReturned div SizeOf (INTERFACE_INFO); i:=0 to NumInterfaces - 1 do//для кожного інтерфейсу:=Buffer [i] .iiAddress.AddressIn;// IP адреса:=inet_ntoa (pAddrInet.sin_addr); pAddrString lt; gt; 127.0.0.1 :=sInt + IP= + pAddrString + laquo ;, + # 10 # 13;
//pAddrInet:=Buffer [i] .iiNetMask.AddressIn;// Маска підмережі
//pAddrString:=inet_ntoa (pAddrInet.sin_addr);
//sInt:=sInt + Mask= + pAddrString + , raquo ;; sInt:= IP= localhost raquo ;;;;
//;
//закриваємо сокети (s) ;;:=false ;; BytesToString (Value: integer): string;=1024;=OneKB * 1024;=OneMB * 1024; Value lt; OneKBResult:=FormatFloat ( #, ## 0.00 B , Value) Value lt; OneMBResult:=FormatFloat ( #, ## 0.00 KB raquo ;, Value/OneKB) Value lt; OneGBResult:=FormatFloat ( #, ## 0.00 MB , Value/OneMB); TForm1.Timer1Timer (Sender: TObject);
//допоміжна функція, яка перетворює МАС адреса до
// нормальному увазі визначаємо спеціальний тип, щоб
//можна було передати у функцію масив ...