PDA

View Full Version : بدست آوردن آدرس IP



Mahmood_M
یک شنبه 23 بهمن 1384, 19:26 عصر
چه طور می شه با دلفی آدرس IP رو بدست آورد؟
:متفکر:

vcldeveloper
دوشنبه 24 بهمن 1384, 01:57 صبح
//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;

mamizadeh
دوشنبه 24 بهمن 1384, 13:07 عصر
با سلام
دوست گرامی این که تو بعضی از جا ها ایراد می ده و می گه بعضی از دستورات را نمی شناسم
آیا از کنابخانه خاصی استفاده می کنه
اگه چنین هستش بی زحمت معرفی کنید
با تشکر

vcldeveloper
سه شنبه 25 بهمن 1384, 06:59 صبح
آیا از کنابخانه خاصی استفاده می کنه
بله، باید WinSock را به Uses اضافه کنید.

delphi5
چهارشنبه 08 فروردین 1386, 11:04 صبح
در دلفی 2006 کتابخانه Winsock قابل شناسائی نیست . میتونید کمکم کنید

m-khorsandi
چهارشنبه 08 فروردین 1386, 11:11 صبح
نام یونیت WinSock تو BDS 2006 تغییری نکرده و تابع آقای کشاورز هم جواب میده.

delphi5
چهارشنبه 08 فروردین 1386, 11:24 صبح
اما در برنامه من قابل شناسائی نیست

delphi5
چهارشنبه 08 فروردین 1386, 11:33 صبح
لطفا به این عکس یه نگاه بیاندازید . Delphi 2006 نتونسته شناسانی کنه

m-khorsandi
چهارشنبه 08 فروردین 1386, 12:13 عصر
شما از Delphi for .Net داری استفاده می‌کنی، به جای اون یونیت، System.Net.Sockets رو اضافه کن.

delphi5
چهارشنبه 08 فروردین 1386, 15:00 عصر
حالا با این تغییری که ایجاد کردن خیلی از متغیرها هم غیر قابل شناسائی شدند


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:21 عصر
آقای خرسندی . نیستید ؟

Shahryar_Bmp
چهارشنبه 08 فروردین 1386, 18:06 عصر
سلام
لطفاً اگه میشه بگید چطوری می تونم آی پی افرادی رو که دارم باهاشون میچتم رو تو دلفی پیدا کنم
ممنون

Inprise
پنج شنبه 09 فروردین 1386, 06:09 صبح
قبل از سوال کردن از امکان جستجوی سایت استفاده کنید