Ĺadny brzuch
Jak programowo sprawdzić IP komputera, na którym działa program?
gg 5286720
Powinno dzialac:)
#include <winsock2.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char buff[100];
hostent *lphe;
WSADATA WSAData;
WSAStartup(MAKEWORD(2, 0), &WSAData);
gethostname(buff, 100);
lphe = gethostbyname(buff);
Label1->Caption = AnsiString(inet_ntoa(*(in_addr*)*lphe->h_addr_list));
WSACleanup();
}
GG: 4596137
Co chcesz sie włamywać do innych??:?:?:?:?:?:?:?:?:?:?:?8)
gg - 2331878
mail : panu@op.pl
Panu
A jak to sprawdzić w Delphi?
----------------
Kamil Wajda
GG:4498354
cytat:Kamil Wajda napisał:
A jak to sprawdzić w Delphi?
Skorzystj z biblioteki Winsock w której znajduj± się definicje funkcji WinAPI służ±ce obsłudze sieci :
uses ......, Winsock, .......;
Następnie napisz funkcję typu TStrings, która w rezultacie poda listę numerów IP przypisanych komputerowi. Przypuszczam, iż mało jest komputerów maj±cych więcej niż 10 numerów IP. Jeżeli jednak zajdziesz taka potrzeba, można zwiększyć rozmiar tablicy TaPInAddr do odpowiadaj±cej ci wielko¶ci :
function numeryIP : Tstrings;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
Result := TstringList.Create;
Result.Clear;
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do
begin
Result.Add(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
PS. Nie ja napisalem ten kod:)
GG: 4596137
cytat:Panu napisał:
Co chcesz sie włamywać do innych??:?:?:?:?:?:?:?:?:?:?:?8)
gg - 2331878
mail : panu@op.pl
Panu
Nie - po prostu jest mi to potrzebne, ale do bardziej szlachetnych celów. Dziękuję za pomoc tym, którzy ją okazali ;)
gg 5286720
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
gg 5286720
Powinno dzialac:)
#include <winsock2.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char buff[100];
hostent *lphe;
WSADATA WSAData;
WSAStartup(MAKEWORD(2, 0), &WSAData);
gethostname(buff, 100);
lphe = gethostbyname(buff);
Label1->Caption = AnsiString(inet_ntoa(*(in_addr*)*lphe->h_addr_list));
WSACleanup();
}
GG: 4596137
Co chcesz sie włamywać do innych??:?:?:?:?:?:?:?:?:?:?:?8)
gg - 2331878
mail : panu@op.pl
Panu
A jak to sprawdzić w Delphi?
----------------
Kamil Wajda
GG:4498354
cytat:Kamil Wajda napisał:
A jak to sprawdzić w Delphi?
Skorzystj z biblioteki Winsock w której znajduj± się definicje funkcji WinAPI służ±ce obsłudze sieci :
uses ......, Winsock, .......;
Następnie napisz funkcję typu TStrings, która w rezultacie poda listę numerów IP przypisanych komputerowi. Przypuszczam, iż mało jest komputerów maj±cych więcej niż 10 numerów IP. Jeżeli jednak zajdziesz taka potrzeba, można zwiększyć rozmiar tablicy TaPInAddr do odpowiadaj±cej ci wielko¶ci :
function numeryIP : Tstrings;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
Result := TstringList.Create;
Result.Clear;
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do
begin
Result.Add(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
PS. Nie ja napisalem ten kod:)
GG: 4596137
cytat:Panu napisał:
Co chcesz sie włamywać do innych??:?:?:?:?:?:?:?:?:?:?:?8)
gg - 2331878
mail : panu@op.pl
Panu
Nie - po prostu jest mi to potrzebne, ale do bardziej szlachetnych celów. Dziękuję za pomoc tym, którzy ją okazali ;)
gg 5286720