Текущий архив: 2005.07.11;
Скачать: CL | DM;
Внизкак узнать все IP в локальной сети Найти похожие ветки
← →
doktor © (2005-04-05 10:44) [0]как узнать айпишники в локальной сети
← →
Rouse_ © (2005-04-05 11:31) [1]Все все?
Ну смотри:
Сеть 192.168.24.0 маска 255.255.255.0 Все апишники это
192.168.24.1
192.168.24.2
192.168.24.3
...
192.168.24.253
192.168.24.254
192.168.24.255
← →
Eraser © (2005-04-05 21:19) [2]doktor ©
unit alxUSock;
interface
uses Windows, Winsock;
{
Åñëè Âû ïîìåñòèòå ñòðîêó ðåçóëüòàòîâ â wide TMEMO (â åãî ñâîéñòâî memo.lines.text)
òî íèêàêèõ ðåçóëüòàòîâ íå óâèäèòå.
Òåñòèðîâàëîñü íà Win98/ME/2K, 95 OSR 2 è NT service
pack #3 , ïîòîìó ÷òî èñïîëüçóåòñÿ WinSock 2 (WS2_32.DLL)
}
function EnumInterfaces(var sInt: string): Boolean;
{ ôóíêöèÿ WSAIOCtl èìïîðòèðóåòñÿ èç Winsock 2.0 - Winsock 2 äîñòóïåí }
{ òîëüêî â Win98/ME/2K è 95 OSR2, NT srv pack #3 }
function WSAIoctl(s: TSocket; cmd: DWORD; lpInBuffer: PCHAR; dwInBufferLen:
DWORD;
lpOutBuffer: PCHAR; dwOutBufferLen: DWORD;
lpdwOutBytesReturned: LPDWORD;
lpOverLapped: POINTER;
lpOverLappedRoutine: POINTER): Integer; stdcall; external "WS2_32.DLL";
{ Êîíñòàíòû âçÿòûå èç çàãîëîâêà C ôàéëîâ }
const SIO_GET_INTERFACE_LIST = $4004747F;
IFF_UP = $00000001;
IFF_BROADCAST = $00000002;
IFF_LOOPBACK = $00000004;
IFF_POINTTOPOINT = $00000008;
IFF_MULTICAST = $00000010;
type sockaddr_gen = packed record
AddressIn: sockaddr_in;
filler: packed array[0..7] of char;
end;
type INTERFACE_INFO = packed record
iiFlags: u_long; // Ôëàãè èíòåðôåéñà
iiAddress: sockaddr_gen; // Àäðåñ èíòåðôåéñà
iiBroadcastAddress: sockaddr_gen; // Broadcast àäðåñ
iiNetmask: sockaddr_gen; // Ìàñêà ïîäñåòè
end;
implementation
{-------------------------------------------------------------------
1. Îòêðûâàåì WINSOCK
2. Ñîçäà¸ì ñîêåò
3. Âûçûâàåì WSAIOCtl äëÿ äîñòóïà ê ñåòåâûì èíòåðôåéñàì
4. Äëÿ êàæäîãî èíòåðôåéñà, ïîëó÷àåì IP, MASK, BROADCAST, ñòàòóñ
5. Ðàçäåëÿåì ñòðîêó ñèìâîëîì CRLF
6. Êîíåö :)
--------------------------------------------------------------------}
function EnumInterfaces(var sInt: string): Boolean;
var s: TSocket;
wsaD: WSADATA;
NumInterfaces: Integer;
BytesReturned, SetFlags: u_long;
pAddrInet: SOCKADDR_IN;
pAddrString: PCHAR;
PtrA: pointer;
Buffer: array[0..20] of INTERFACE_INFO;
i: Integer;
begin
result := true; // Èíèöèàëèçèðóåì ïåðåìåííóþ
sInt := "";
WSAStartup($0101, wsaD); // Çàïóñêàåì WinSock
// Çäåñü ìîæíî äàáàâèòü ðàçëè÷íûå îáðàáîò÷èêè îøèáêè :)
s := Socket(AF_INET, SOCK_STREAM, 0); // Îòêðûâàåì ñîêåò
if (s = INVALID_SOCKET) then exit;
try // Âûçûâàåì WSAIoCtl
PtrA := @bytesReturned;
if (WSAIoCtl(s, SIO_GET_INTERFACE_LIST, nil, 0, @Buffer, 1024, PtrA, nil,
nil)
<> SOCKET_ERROR)
then
begin // Åñëè OK, òî îïðåäåëÿåì êîëè÷åñòâî ñóùåñòâóþùèõ èíòåðôåéñîâ
NumInterfaces := BytesReturned div SizeOf(INTERFACE_INFO);
for i := 0 to NumInterfaces-1 do // Äëÿ êàæäîãî èíòåðôåéñà
begin
pAddrInet := Buffer[i].iiAddress.addressIn; // IP àäðåñ
pAddrString := inet_ntoa(pAddrInet.sin_addr);
sInt:=sInt+pAddrString;
if i=NumInterfaces-1 then
sInt := sInt
else
sInt := sInt + #13#10;
// CRLF ìåæäó êàæäûì èíòåðôåéñîì
end;
end;
except
end;
//
// Çàêðûâàåì ñîêåòû
//
CloseSocket(s);
WSACleanUp;
result := false;
end;
end.
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.041 c