PDA

View Full Version : تهیه لیستی از IPهای یک کامپیوتر



shobair
چهارشنبه 07 تیر 1391, 11:01 صبح
سلام

من میخوام لیستی از IP های یک کامپیوتر تهیه کنم. کامپوننت Indy یک کنترل IPWatch داره ولی فقط IP لوکال رو برمیگردونه. مثالهایی هم که تو اینترنت پیدا کردم فقط یکی از IP ها رو برمیگردونن در حالی که مثلاً در مورد من کامپیوتری وجود داره که 3 تا آداپتور شبکه داره و 3 تا IP.

با تشکر
شبیر

Mask
چهارشنبه 07 تیر 1391, 13:16 عصر
لطفا قبل از ایجاد پست ، گوگل کنید.
این سوالتون هم مربوط به بخش شبکست ، نه عمومی.
منبع :
http://www.vbforums.com/showthread.php?t=342878
http://www.delphitricks.com/source-code/internet/get_your_own_ip_address.html


uses
winsock

function getIPs: Tstrings;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array[0..63] of ansiChar;
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;


procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetIps.text);
end;

shobair
چهارشنبه 07 تیر 1391, 14:59 عصر
سلام

ممنون. من گوگل کردم ولی بیشتر جوابها مربوط به آپی لوکال بود. ضمناً همچنان فکر می کنم پستم رو تو بخش درستی زدم چون اصولاً سوالم مربوط به "توسعه نرم افزارهای تحت شبکه" نیست.
ضمناً یک منبع بهتر پیدا کردم که اینجا میذارم چون کد شما مشخصات آداپتورها رو نمیده فقط آی پی میده و مشخص نیست کدوم آی پی به کدوم آداپتور اختصاص داره. این بسیار کامله:
http://www.codeforge.com/article/120445

بازم ممنون
شبیر