Unity——通信的IP地址和端口类

目录

IP地址和端口类

        引用头文件

        IPAddress类

                初始化IP信息的方式

                        1.用byte数组进行初始化

                        2.用long长整型进行初始化                 

                       4字节对应的长整型 一般不建议大家使用

                        3.推荐使用的方式 使用字符串转换

                        4. 获取可用的IPv6地址

        IPEndPoint类

                初始化方式

总结

域名解析

        什么是域名解析

IPHostEntry类

        主要作用:

Dns类

        主要作用:

        常用方法

                1.获取本地系统的主机名 

                2.获取指定域名的IP信息

                根据域名获取

                        同步获取

                        异步获取

总结


IP地址和端口类

        引用头文件

using System.Net;

       

        IPAddress类

                初始化IP信息的方式

                        1.用byte数组进行初始化

 byte[] ipAddress = new byte[] { 118, 102, 111, 11 };
 IPAddress ip1 = new IPAddress(ipAddress);

                        2.用long长整型进行初始化
                            4字节对应的长整型 一般不建议大家使用

IPAddress ip2 = new IPAddress(0x79666F0B);

                        3.推荐使用的方式 使用字符串转换

 IPAddress ip3 = IPAddress.Parse("118.102.111.11");

                        4. 获取可用的IPv6地址

IPAddress.IPv6Any

特殊IP地址
127.0.0.1代表本机地址

        IPEndPoint类

                IPEndPoint类将网络端点表示为IP地址和端口号,表现为IP地址和端口号的组合

                

                初始化方式

 

IPEndPoint ipPoint = new IPEndPoint(0x79666F0B, 8080);

IPEndPoint ipPoint2 = new IPEndPoint(IPAddress.Parse("118.102.111.11"), 8080);

               

总结

//程序表示IP信息
IPAddress ip = IPAddress.Parse("IPv4地址");
//程序表示通信目标
IPEndPoint point = new IPEndPoint(ip, 8080);

域名解析

        什么是域名解析

                域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等

                就是将好记的域名解析成IP

                IP地址是网络上标识站点的数字地址,但是IP地址相对来说记忆困难

                所以为了方便记忆,采用域名来代替IP地址标识站点地址

                比如 我们要登录一个网页 www.baidu.com 这个就是域名 我们可以通过记忆域名来记忆一个远端服务器的地址,而不是记录一个复杂的IP地址

                域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成

                我们在进行通信时又是会有需求通过域名获取IP

                域名系统(DNS)是互联网的一项服务

                它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网

                是因特网上解决网上机器命名的一种系统,因为IP地址记忆不方便,就采用了域名系统来管理名字和IP的对应关系

 

IPHostEntry类

        主要作用:

                域名解析后的返回值,可用通过该对象获取IP地址、主机名等等信息 

                该类不会自己声明,都是作为某些方法的返回值返回信息,我们主要通过该类对象获取返回的信息

        获取关联IP                成员变量:AddressList

        获取主机别名列表     成员变量:Aliases

        获取DNS名称            成员变量:HostName       

IPHostEntry entry = Dns.GetHostEntry("www.baidu.com");

Dns类

        主要作用:

                Dns是一个静态类,提供了很多静态方法,可以使用它来根据域名获取IP地址

        

        常用方法

                1.获取本地系统的主机名 

 print(Dns.GetHostName());

                2.获取指定域名的IP信息

                根据域名获取

                        同步获取

                                注:由于获取远程主机信息是需要进行网络通信,所以困难会阻塞主线程

    /// <summary>
    /// 同步域名获取
    /// </summary>
    public void GetDNS()
    {
        //获取域名的地址
        IPHostEntry entry = Dns.GetHostEntry("www.baidu.com");

        //获取关联ip
        for (int i = 0; i < entry.AddressList.Length; i++)
        {
            Debug.Log("IP地址:" + entry.AddressList[i]);          
        }

        //获取主机别名
        for (int i = 0; i < entry.Aliases.Length; i++)
        {
            Debug.Log("主机别名:" + entry.Aliases[i]);
        }


        //获取DNS服务器名称
        Debug.Log("DNS服务器名称" + entry.HostName);

    }

                

                        异步获取

                                需要提前引入异步的命名空间

//引入异步的命名空间
using System.Threading.Tasks;


    //代表该方法是异步获取
    private async void GetHostEntry()
    {
        //task异步的制定对象
        Task<IPHostEntry> task = Dns.GetHostEntryAsync("www.baidu.com");

        //等待task获取对象,获取对象结束后才能执行下面的语句
        await task;

        for (int i = 0; i < task.Result.AddressList.Length; i++)
        {
            print("IP地址:" + task.Result.AddressList[i]);
        }
        for (int i = 0; i < task.Result.Aliases.Length; i++)
        {
            print("主机别名" + task.Result.Aliases[i]);
        }
        for (int i = 0; i < 10000; i++)
        {
            print("1");
        }
        print("DNS服务器名称" + task.Result.HostName);
    }

总结

        如果不知道对方的IP地址,想通过域名和对方进行通信

        我们可以通过Dns类通过域名得到IP地址后再和对方建立连接并通信

猜你喜欢

转载自blog.csdn.net/m0_51743362/article/details/124914239