将IPAddress[]转换为字符串

问题描述 投票:1回答:3

我有一个服务器应用程序,我试图从机器的动态分配IP地址中自动设置IP地址。到目前为止,我已经得到了这个IPv4,但它是以IPAddress[]的类型返回的,我有一些麻烦将其转换为字符串[],这样我的HttpListener就可以使用它。有什么提示可以告诉我如何转换它?还是我的方法不对?

这就是我用来获取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();
c# httplistener
3个回答
3
投票

这应该可以解决这个问题。

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;


0
投票

如果你有一个......IPAdress的数组,你可以使用LINQ转换每个IPAdress,然后你可以使String的数组:不要忘记:如果你有一个 IPAddress 对象,你可以得到这样的字符串表示。

v4:

validIP4.MapToIPv4().ToString();

v6:

validIP4.MapToIPv6().ToString();
© www.soinside.com 2019 - 2024. All rights reserved.