2014-10-22 5 views
1

У меня есть серверное приложение, к которому я пытаюсь автоматически установить IP-адрес, взятый из динамически распределенного IP-адреса машины. Пока у меня есть это, чтобы получить IPv4, но он возвращается как тип IPAddress [], который у меня есть некоторые проблемы с преобразованием в строку [], поэтому мой HttpListener может его использовать. Любой намек на то, как я могу его преобразовать? Или я об этом ошибаюсь?Преобразование IPAddress [] в строку

Это то, что я использую, чтобы получить IP-адрес:

class Program 
{ 
    static void Main(string[] args) 
    { 
     string name = (args.Length < 1) ? Dns.GetHostName() : args[0]; 
     try 
     { 
      IPAddress[] addrs = Array.FindAll(Dns.GetHostEntry(string.Empty).AddressList, 
       a => a.AddressFamily == AddressFamily.InterNetwork); 
      Console.WriteLine("Your IP address is: "); 
      foreach (IPAddress addr in addrs) 
       Console.WriteLine("{0} {1}", name, addr); 

      //Here I'm trying to convert the IPAddress[] into a string[] to use in my listener 
      string str = addrs.ToString(); 
      string[] ipString = { str }; 
      Response.Listener(ipString); 

     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e.Message); 
     } 

     //current way of setting the IP address - not optimal 
     string[] ipstring = new string[1] {"10.10.180.11:8080"}; 
     Response.Listener(ipstring); 


    } 

} 

и слушателем, ради хороших времен:

public static void Listener(string[] prefixes) 
    { 
     if (!HttpListener.IsSupported) 
     { 
      Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class."); 
      return; 
     } 
     // URI prefixes are required, 
     // for example "http://contoso.com:8080/index/". 
     if (prefixes == null || prefixes.Length == 0) 
      throw new ArgumentException("prefixes"); 


     // Create a listener. 
     HttpListener listener = new HttpListener(); 
     // Add the prefixes. 
     foreach (string s in prefixes) 
     { 
      listener.Prefixes.Add("http://" + s + "/"); 
     } 

     listener.Start(); 

ответ

2

Это должно сделать трюк.

string[] ips = addresses.Select(ip => ip.ToString()).ToArray(); 

Убедитесь, что у вас есть, используя заявление для System.Linq

0

Вы пытаетесь преобразовать массив в IPAdress давал как один IPAdress.

Вы можете использовать LINQ для преобразования каждого IPAdress, то вы можете сделать массив струны:

String[] strAddrs = (from cad in addrs select cad.ToString()).ToArray(); 

Не забывайте: using System.Linq;