2016-04-01 13 views
1

こんにちは質問があります。nslookupドメインのすべてのIPアドレスを取得しようとしています。私は、ボタン上のC#で次のスクリプトを使用していますが、それは1つのIPアドレスを出力します。何が間違っていますか?なぜnslookupからすべてのIPアドレスをCで印刷できないのですか#

string myHost = "domain.com"; 
string myIP = null; 


for (int i = 0; i <= System.Net.Dns.GetHostEntry(myHost).AddressList.Length - 1; i++) 
{ 
    if (System.Net.Dns.GetHostEntry(myHost).AddressList[i].IsIPv6LinkLocal == false) 
    { 
     //myIP = System.Net.Dns.GetHostEntry(myHost).AddressList[i].ToString(); 
     txtIp.Text = System.Net.Dns.GetHostEntry(myHost).AddressList[i].ToString(); 
    } 
} 

私はstackoverflowの上でここにみとめの回答を見てきたので、すべてのヘルプはgreatfullだろうが、私は1つが正常に動作させることはできません。

に関して、 デニス

答えて

3

まず第一に、あなたは、DNS要求3回を避ける必要があります。結果を変数に格納します。

第2に、txtIp.Textを最後のエントリに設定します。文字列を追加する必要がありますが、文字列を置き換えます。このコードを試してみてください。

string myHost = "domain.com"; 
string myIP = null; 
IPHostEntry hostEntry = System.Net.Dns.GetHostEntry(myHost); 

for (int i = 0; i <= hostEntry.AddressList.Length - 1; i++) 
{ 
    if (!hostEntry.AddressList[i].IsIPv6LinkLocal) 
    { 
     txtIp.Text += hostEntry.AddressList[i].ToString(); 
    } 
} 

しかし、これはまだこれに短縮することができます。

string myHost = "domain.com"; 
string myIP = null; 
IPHostEntry hostEntry = System.Net.Dns.GetHostEntry(myHost); 
txtIP.Text = string.Join(", ", hostEntry.AddressList.Where(ip => !ip.IsIPv6LinkLocal).Select(ip => ip.ToString())); 

これはあなたのIPアドレスのカンマ区切りのリストを提供します。

+0

大変感謝しています。 – user1796805

関連する問題