私の外部(公開)IPアドレスをDelphiから取得する必要があります。Delphiで外部(公開)IPを取得する方法
例えば、www.whatismyip.comで示される同じIP。
どうすればいいですか? Winsockはこれを許可しません。
私の外部(公開)IPアドレスをDelphiから取得する必要があります。Delphiで外部(公開)IPを取得する方法
例えば、www.whatismyip.comで示される同じIP。
どうすればいいですか? Winsockはこれを許可しません。
私はできないと思います。さて、あなたのIPアドレスが何であるかを示すサービス(例:http://www.whatismyip.com/)を呼び出して、それを応答から見つけることができます。しかし、私はあなたのPC上の何かがあなたのIPアドレスがどのように見えるかを外界に伝えることはできないと思います。
テストされていないが、私はあなたがインディでこれを行うことができると思います。これを使用する前http://www.whatismyip.com/faq/automation.asp:
MyPublicIP := IdHTTP1.Get('http://automation.whatismyip.com/n09230945.asp');
でのルール/ポリシーをご覧ください。メモリから
...あなたのパブリックアドレスが必ずしもコンピュータに接続されているわけではありません。ほとんどの場合、すべてのエフェクトとはまったく異なるコンピュータである外部ルータに割り当てられます。 –
はい。パブリックIPとデフォルトゲートウェイを持つアダプタは、2つの異なるものです。 –
、テストされていない:http://ipinfo.io/json:あなたがこのウェブサイトを使用することができます
function GetMyHostAddress: string;
var
http: IWinHttpRequest;
begin
http := CreateOleObject('WinHttp.WinHttpRequest5.1') as IWinHttpRequest;
http.Open('GET', 'http://automation.whatismyip.com/n09230945.asp', False);
http.Send(EmptyParam);
if http.StatusCode = 200 then
Result := http.ResponseText
else
Result := '';
end;
。現在のインターネット接続に関する情報をJSON
形式で返します。 Delphiで
あなたはIdHTTP
をこの方法を使用する必要があります:IdHTTP1.Get('http://ipinfo.io/json')
、それはすべてのデータと文字列を返します。あなたが好きか、次の例としてlkJSON
を使用することができますJSON
インタプリタを使用することができます。
json := TlkJSON.ParseText(MainEstrutura.IdHTTP1.Get('http://ipinfo.io/json')) as TlkJSONobject;
str := json.Field['ip'].Value;
私はあなたを助け願っています。
代わりに 'http:// ipinfo.io/ip'を使用すると、IPを単なるテキストとして返します。JSONでパースしなければなりません。 –
この回答のコードでは、このIPに関するすべての情報を取得するために 'http:// ipinfo.io/json'を使用する必要があります。 –
OPはIPに関するすべての詳細を取得するよう要求しませんでした。 。したがって、 '/ json'は'/ip'で十分です。ウェブサイトのドキュメントを読むと、個々のフィールドは単独で取得できます。 –
これは私の作品:
外部IPアドレスでuses JSON,IdHTTP;
function GetIP():String;
var LJsonObj : TJSONObject;
str:string;
http : TIdHttp;
begin
str:='';
http:=TIdHTTP.Create(nil);
try
str:=http.Get('http://ipinfo.io/json');
LJsonObj:= TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(str),0) as TJSONObject;
str := LJsonObj.Get('ip').JsonValue.Value;
LJsonObj.Free;
http.Free;
Except
end;
result:=str;
end;
私は、余分なメタデータの書式設定なしに、IP自体をプレーンテキストとして報告するサービスを使用することを好みます。次に例を示します。 'function GetIP:String; TIdHTTPで始まります。試してください。結果:= http。取得する( 'http://ipinfo.io/ip');ようやくフリー。終わり;最後; –
Function GetMyIP:string;
var
xmlhttp:olevariant;
s,p:integer;
temp:string;
begin
result:=emptystr;
xmlhttp:=CreateOleObject('Microsoft.XMLHTTP');
try
xmlhttp.open('GET', 'http://www.findipinfo.com/', false);
xmlhttp.SetRequestHeader('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3');
xmlhttp.send(null);
except
exit;
end;
if(xmlhttp.status = 200) then
temp:=trim(VarToStr(xmlhttp.responseText));
xmlhttp:=Unassigned;
s:=pos('Address Is:',temp);
if s>0 then
inc(s,11)
else
exit;
temp:=copy(temp,s,30);
s:=pos('<',temp);
if s=0 then exit
else
dec(s);
result:=trim(copy(temp,1,s));
end;
、あなたがあなたのインターネットアクセス可能なIPアドレスを意味していますか?または127.0.0.1ではないローカルネットワークアドレスを意味しますか? – Tremmors
インターネットアクセス可能なアドレス、www.whatismyip.comで示されているアドレス – chubbyk
この質問は、コンピュータの実際のIPアドレスを示しています。 http://stackoverflow.com/questions/576538/delphi-how-to-get-all-local-ips –