چه طور می شه با دلفی آدرس IP رو بدست آورد؟
:متفکر:
Printable View
چه طور می شه با دلفی آدرس IP رو بدست آورد؟
:متفکر:
//Detect own TCP/IP address
function DetectHostIP: string;
var
wsdata : TWSAData;
hostName : array [0..255] of char;
hostEnt : PHostEnt;
addr : PChar;
begin
WSAStartup ($0101, wsdata);
try
gethostname (hostName, sizeof (hostName));
hostEnt := gethostbyname (hostName);
if Assigned (hostEnt) then
if Assigned (hostEnt^.h_addr_list) then begin
addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin
Result := Format ('%d.%d.%d.%d', [byte (addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
end
else
Result := '0.0.0.0';
end
else
Result := '0.0.0.0'
else begin
MessageDlg(Format ('Winsock error %d', [WSAGetLastError]), mtError, [mbOk], 0);
Result := '0.0.0.0';
end;
finally
WSACleanup;
end
end;
با سلام
دوست گرامی این که تو بعضی از جا ها ایراد می ده و می گه بعضی از دستورات را نمی شناسم
آیا از کنابخانه خاصی استفاده می کنه
اگه چنین هستش بی زحمت معرفی کنید
با تشکر
بله، باید WinSock را به Uses اضافه کنید.نقل قول:
آیا از کنابخانه خاصی استفاده می کنه
در دلفی 2006 کتابخانه Winsock قابل شناسائی نیست . میتونید کمکم کنید
نام یونیت WinSock تو BDS 2006 تغییری نکرده و تابع آقای کشاورز هم جواب میده.
اما در برنامه من قابل شناسائی نیست
لطفا به این عکس یه نگاه بیاندازید . Delphi 2006 نتونسته شناسانی کنه
شما از Delphi for .Net داری استفاده میکنی، به جای اون یونیت، System.Net.Sockets رو اضافه کن.
حالا با این تغییری که ایجاد کردن خیلی از متغیرها هم غیر قابل شناسائی شدند
function GetIPFromHost
(var HostName, IPaddr, WSAErr: string): Boolean;
type
Name = array[0..100] of Char;
PName = ^Name;
var
HEnt: pHostEnt;
HName: PName;
WSAData: TWSAData;
i: Integer;
begin
Result := False;
if WSAStartup($0101, WSAData) <> 0 then begin
WSAErr := 'Winsock is not responding."';
Exit;
end;
IPaddr := '';
New(HName);
if GetHostName(HName^, SizeOf(Name)) = 0 then
begin
HostName := StrPas(HName^);
HEnt := GetHostByName(HName^);
for i := 0 to HEnt^.h_length - 1 do
IPaddr :=
Concat(IPaddr,
IntToStr(Ord(HEnt^.h_addr_list^[i])) + '.');
SetLength(IPaddr, Length(IPaddr) - 1);
Result := True;
end
else begin
case WSAGetLastError of
WSANOTINITIALISED:WSAErr:='WSANotInitialised';
WSAENETDOWN :WSAErr:='WSAENetDown';
WSAEINPROGRESS :WSAErr:='WSAEInProgress';
end;
end;
Dispose(HName);
WSACleanup;
end;
از جمله pHostEnt و TWSAData و WSAStartup و GetHostName و StrPas و GetHostByName و ... .
فکر می کنم با تغییر کتابخانه توابع نیز تغییر کردند . حال اگه میدونید لطف کنید و بفرمایید که من چطور میتونم به این توابع دسترسی داشته باشم ؟
یه دنیا ممنون
آقای خرسندی . نیستید ؟
سلام
لطفاً اگه میشه بگید چطوری می تونم آی پی افرادی رو که دارم باهاشون میچتم رو تو دلفی پیدا کنم
ممنون
قبل از سوال کردن از امکان جستجوی سایت استفاده کنید