ورود

View Full Version : سوال: بدست آوردن آی پی اینترنتی



Mask
دوشنبه 09 اسفند 1389, 20:43 عصر
با سلام
من به راحتی آی پی کارت شبکم رو بدست میارم. اما چطوری باید آی پی اینترنتم رو بدست بیارم.
یه سری به سایت زیر بزنید.
http://www.iplocationfinder.com/
تو این سایت آی پی حقیقی اینترنتیمون رو نمایش میده.
چطوری باید اینو بدست آورد.
یه سرچی کردم یه سری کد بود اما هیچکدوم این آی پی رو برنمیگردوند.
ممنون.

X-DATA
شنبه 05 مرداد 1392, 11:52 صبح
منم دنبالشم کسی راه حلی داره Ip توی اینترنت رو بدست اورد

terminator68
شنبه 05 مرداد 1392, 11:57 صبح
سلام.
من کدش به زبان VB رو دارم.
خواستی بگو بهت بدم...

whitecap
شنبه 05 مرداد 1392, 12:04 عصر
اگر ip خودتان را می خواهید این کار را انجام دهید :
1- دکمه ی ویندوز و R را همزمان نگه دارید . یا 2- به منوی استارت بروید روی All programs کلیک کنید ، Accessories را انتخاب کنید و در آخر Command Prompt را بزنید .
در هر دوی این روش ها پنجره ای سیاه رنگ باز میشود . حال دستور ipconfig را تایپ کنید . ip شما نمایش داده میشود .

esmit61
یک شنبه 06 مرداد 1392, 13:57 عصر
من توی یه برنامه نیاز داشتم که آی پی و مشخصات جغرافیایی اون رو بدونم، با XML از سایتی که نوشتم اطلاعات رو گرفتم. تقریباً خوب جواب میده و به روز هست. برای هدف شما که کاملاً دقیق ج میده. البته شاید بتونید راه ساده تری هم پیدا کنید:
procedure TForm1.GetGeoInfo(const IpAddress : string);
const
UrlGeoLookupInfo ='http://api.ipinfodb.com/v2/ip_query.php?key=b2161ac0168e7cdb041ded8ad2f9a5093 399a3381d772954f0a6d25408e6f31d&ip=%s&timezone=true';
UrlGeoLookupInfo2 ='http://backup.ipinfodb.com/ip_query.php?key=b2161ac0168e7cdb041ded8ad2f9a5093 399a3381d772954f0a6d25408e6f31d&timezone=true'; //backup server
var
lHTTP : TIdHTTP;
lStream: TStringStream;
XMLDoc : OleVariant;
ANode : OleVariant;
GeoInfo :TGeoInfo;
begin
if not InternetCheck() then begin
MessageDlg('Error: Connect to the internet',mtError,[mbOK],0);
exit;
end;

lHTTP := TIdHTTP.Create(nil);
lStream := TStringStream.Create('');
try
try
// S:= UrlGeoLookupInfo + IpAddress + '&timezone=true';
lHTTP.Get(Format(UrlGeoLookupInfo,[IpAddress]) , lStream); //get the request
except
MessageDlg('Error: Connect to the internet',mtError,[mbOK],0);
lHTTP.Get(UrlGeoLookupInfo2, lStream); //if something is wrong try using the backup server.
end;
lStream.Seek(0,0);
XMLDoc := CreateOleObject('Msxml2.DOMDocument.6.0');
XMLDoc.async := false;
XMLDoc.LoadXML(lStream.ReadString(lStream.Size));
XMLDoc.setProperty('SelectionLanguage','XPath');//use XPath to parse the xml result
ANode:=XMLDoc.selectSingleNode('/Response/Status');
if not VarIsNull(ANode) then GeoInfo.Status:=ANode.Text;
if not(GeoInfo.Status = 'OK') then begin
MessageDlg(GeoInfo.Status,mtError,[mbOK],0);
Exit;
end;

ANode:=XMLDoc.selectSingleNode('/Response/CountryCode');
if not VarIsNull(ANode) then GeoInfo.CountryCode:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/CountryName');
if not VarIsNull(ANode) then GeoInfo.CountryName:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/RegionCode');
if not VarIsNull(ANode) then GeoInfo.RegionCode:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/City');
if not VarIsNull(ANode) then GeoInfo.City:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/ZipPostalCode');
if not VarIsNull(ANode) then GeoInfo.ZipPostalCode:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/Latitude');
if not VarIsNull(ANode) then GeoInfo.Latitude:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/RegionName');
if not VarIsNull(ANode) then GeoInfo.RegionName:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/Longitude');
if not VarIsNull(ANode) then GeoInfo.Longitude:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/TimezoneName');
if not VarIsNull(ANode) then GeoInfo.TimezoneName:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/Gmtoffset');
if not VarIsNull(ANode) then GeoInfo.Gmtoffset:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/Isdst');
if not VarIsNull(ANode) then GeoInfo.Isdst:=ANode.Text;
ANode:=XMLDoc.selectSingleNode('/Response/Ip');
if not VarIsNull(ANode) then GeoInfo.IP:=ANode.Text;
finally
lHTTP.Free;
lStream.Free;
end;
end;


نوع رکورد رو هم اینجوری تعریف کنید:
type
TGeoInfo = record
Status : string;
CountryCode : string;
CountryName : string;
RegionCode : string;
City : string;
ZipPostalCode : string;
Latitude : string;
Longitude : string;
TimezoneName : string;
Gmtoffset : string;
Isdst : string;
IP : string;
RegionName : string;
end;


موفق باشید

esmit61
یک شنبه 06 مرداد 1392, 14:06 عصر
دو تا نکته:
اون دوتا ثابت اولی بد کپی شدند. کلا متن رو select all کنید که کامل بگیریدشون. فاصله بینشونم حذف کنید
ورودی تابع اگه رشته '0' باشه آی پی خودتون رو برمیگردونه

X-DATA
دوشنبه 07 مرداد 1392, 14:13 عصر
دوستان این بخش دلفی هست خواهشتمندم اگر کسی راه حل پاسکالی داره بفرماید
نکته بعد اینکه یک راه حل درست حسابی دنبالشم که بعدها به مشکل نخوره نرم افزار در ضمن من IP تو شبکه اینترنت رو میخوام نه IP خود سیستم رو

esmit61
دوشنبه 07 مرداد 1392, 14:28 عصر
شما سوالتون رو توی بخش شبکه دلفی پرسیدید
جوابی که دادم IP توی اینترنت رو برمیگردونه نه خود سیستم رو

X-DATA
سه شنبه 08 مرداد 1392, 19:54 عصر
http://api.ipinfodb.com/v2/ip_query.php?key=b2161ac0168e7cdb041ded8ad2f9a5093 %C2%A0
ممنون دوست عزيز منظورم اينه كه اين سايت چقدر قابل اعتماد هست كه down نشه

gholami146
پنج شنبه 10 مرداد 1392, 11:56 صبح
//add URLMon In Uses
function Ipfilter(sTexto: String): String;
var
iCont: Short;
sTemp: String;
begin
sTemp := '';
for iCont := 1 to Length(sTexto) do
if (sTexto[iCont] in ['0'..'9','.']) then
sTemp:=sTemp+sTexto[iCont];
//AppendStr(sTemp, sTexto[iCont]);
Result := sTemp;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
parser:TStrings;
begin
if URLDownloadToFile(nil, 'http://checkip.dyndns.org/', 'c:\windows\temp\externalip.txt', 0, nil) <> 0 then
MessageBox(Handle, 'An error ocurred while downloading the file.', PChar(Application.Title), MB_ICONERROR or MB_OK);
parser := TStringList.Create;
parser.LoadFromFile('c:\windows\temp\externalip.tx t');
//showmessage(parser.Text);
edt1.text:=ipfilter(copy(parser.text,pos('IP Address: ',parser.text)+12,16));
parser.Free;
end;


این روشی هست که من استفاده می کنم و 100% جواب میده