چه طور می شه با دلفی آدرس IP رو بدست آورد؟
چه طور می شه با دلفی آدرس 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 و ... .
فکر می کنم با تغییر کتابخانه توابع نیز تغییر کردند . حال اگه میدونید لطف کنید و بفرمایید که من چطور میتونم به این توابع دسترسی داشته باشم ؟
یه دنیا ممنون
آخرین ویرایش به وسیله delphi5 : چهارشنبه 08 فروردین 1386 در 15:06 عصر دلیل: از تگ Code استفاده کنید.
سلام
لطفاً اگه میشه بگید چطوری می تونم آی پی افرادی رو که دارم باهاشون میچتم رو تو دلفی پیدا کنم
ممنون
قبل از سوال کردن از امکان جستجوی سایت استفاده کنید
UNIX is simple. It just takes a genius to understand its simplicity
-- Dennis Ritchie