获取IP地址的方法、装置、计算机设备和存储介质与流程

文档序号:18451383发布日期:2019-08-17 01:17阅读:271来源:国知局
获取IP地址的方法、装置、计算机设备和存储介质与流程

本发明涉及网络技术领域,特别是涉及一种获取ip地址的方法、获取ip地址的装置、计算机设备和计算机可读存储介质。



背景技术:

在互联网的多种应用场景之下,需要获取设备的ip地址(即互联网协议地址,internetprotocoladdress,如ipv4地址、ipv6地址)。例如,在对客户端设备的ip地址信息进行统计时,需要先获取该客户端设备的ip地址。然而,在实际情况当中,由于设备的网络接口的复杂性,设备的各个网络接口往往对应了不同的ip地址。如同时连接着wifi热点和有线网络的设备会同时存在无线ip地址和有线ip地址,在安装了虚拟机后,该设备又会增加多个虚拟的网络接口,还可以通过usb数据线或蓝牙连接到手机,共享手机的蜂窝无线网络,这时该设备又会增加几个网络接口,导致设备的网络接口复杂性较高,难以直接获取实际所需要的该设备的ip地址。

传统技术通常采用ifconfig命令直接获取设备的ip地址信息,而采用这种技术则难以对不同网络接口的ip地址进行区分,如无法对有线网络接口的ip地址和无线网络接口的ip地址进行区分,需要借助其他参数来对获取的ip地址进行二次筛选,导致这种技术获取设备的ip地址的效率低。



技术实现要素:

基于此,有必要针对传统技术获取ip地址的效率低的技术问题,提供一种获取ip地址的方法、获取ip地址的装置、计算机设备和计算机可读存储介质。

一种获取ip地址的方法,包括步骤:

获取目标设备的各个网络接口的网络接口信息;

根据所述网络接口信息确定所述各个网络接口的优先级;

获取所述目标设备的ip地址信息;

按照所述优先级从高到低的顺序,从所述ip地址信息中依次获取与相应优先级的网络接口相对应的ip地址。

一种获取ip地址的装置,包括:

接口信息获取模块,用于获取目标设备的各个网络接口的网络接口信息;

优先级确定模块,用于根据所述网络接口信息确定所述各个网络接口的优先级;

地址信息获取模块,用于获取所述目标设备的ip地址信息;

地址获取模块,用于按照所述优先级从高到低的顺序,从所述ip地址信息中依次获取与相应优先级的网络接口相对应的ip地址。

一种计算机设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如下步骤:

获取目标设备的各个网络接口的网络接口信息;根据所述网络接口信息确定所述各个网络接口的优先级;获取所述目标设备的ip地址信息;按照所述优先级从高到低的顺序,从所述ip地址信息中依次获取与相应优先级的网络接口相对应的ip地址。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:

获取目标设备的各个网络接口的网络接口信息;根据所述网络接口信息确定所述各个网络接口的优先级;获取所述目标设备的ip地址信息;按照所述优先级从高到低的顺序,从所述ip地址信息中依次获取与相应优先级的网络接口相对应的ip地址。

上述获取ip地址的方法、装置、计算机设备和存储介质,获取目标设备的各个网络接口的网络接口信息,根据该网络接口信息确定各个网络接口的优先级,获取目标设备的ip地址信息,然后根据上述优先级从高到低的顺序从该ip地址信息当中依次获取与相应优先级的网络接口相对应的ip地址,该方案一方面能够完整地查询出目标设备的各个网络接口的ip地址,确保查询得到的ip地址不会遗漏,另一方面还可以根据由网络接口信息所确定的优先级,从ip地址信息中依次获取各个网络接口相对应的ip地址,有利于在复杂的网络接口条件下,快速优先筛选出有效的ip地址,提高了ip地址的获取效率。

附图说明

图1为一个实施例中获取ip地址的方法的流程示意图;

图2为另一个实施例中获取ip地址的方法的流程示意图;

图3为一个实施例中获取ip地址的装置的结构框图;

图4为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在一个实施例中,提供了一种获取ip地址的方法,参考图1,图1为一个实施例中获取ip地址的方法的流程示意图,该方法可以应用于如终端、服务器等计算机设备当中,该获取ip地址的方法可以包括以下步骤:

步骤s101,获取目标设备的各个网络接口的网络接口信息。

其中,设备可以设有多个网络接口,网络接口可以用于将该设备连接至网络,不同的网络接口可以将设备连接至不同的网络,如无线网络接口(无线网卡)可以将设备连接至wifi网络,有线网络接口(有线网卡)可以将连接到光纤网络等等。

设备的不同的网络接口对应不同的ip地址(即互联网协议地址,internetprotocoladdress,是ipaddress的缩写),ip地址是ip协议提供的一种统一的地址格式,为互联网上的每个设备分配一个逻辑地址,以此来屏蔽物理地址的差异。其中,当需要获取某个设备的网络接口的ip地址时,则将该设备设为目标设备。例如,当需要获取终端a的网络接口的ip地址时,则将该终端a作为目标设备,当需要获取服务器a的网络接口的ip地址时,则将该服务器a作为目标设备。

目标设备可以设有包括有线网卡、无线网卡等多个网络接口,各个网络接口具有一定的网络接口信息,该网络接口信息是指用于描述与该设备的网络接口本身相关的信息,如网络接口的显示名称(displayname)、网络接口的接口类型(interfacetype)和网络接口的物理接口名称(bsdname)等等。

以macos系统的终端作为目标设备为例,可以调用macos系统的scnetworkinterfacecopyall接口,得到该终端各个网络接口的所有的网络接口信息,然后可以将每一个网络接口的网络接口信息通过一个三元数据组进行表达:<网络接口的显示名称,网络接口的接口类型,网络接口的物理接口名称>,其中,网络接口的显示名称、网络接口的接口类型和网络接口的物理接口名称在三元数据组中的顺序可变,可以理解的是,除了网络接口的显示名称,网络接口的接口类型,网络接口的物理接口名称这三个参数以外,还可以根据实际需要将该网络接口的其他参数加入到上述三元数据组当中,以多元数据组的形式对网络接口信息进行表达。

步骤s102,根据网络接口信息确定各个网络接口的优先级。

本步骤主要是可以根据终端的各个网络接口的网络接口信息,从而确定各个网络接口的优先级。其中,该优先级主要是用于标识各个网络接口的ip地址的查询顺序,优先级高的网络接口,在查询ip地址时进行优先查询。

本步骤中,优先级可以根据网络接口信息结合实际的应用场景进行灵活制定,例如,对于作为客户端使用的终端,该终端的使用状态通常为无线或无线加有线的网络连接方式,而对于服务器来说,则通常只会连接一个有线网络。因此,作为客户端使用的终端来说,可以根据该终端的各个网络接口的网络接口信息,将无线网络接口的优先级设置为高于有线网络接口,即优先查询无线网络接口的ip地址,其次查询有线网络接口的ip地址,而对于服务器来说,则可以根据该服务器的各个网络接口的网络接口信息,将有线网络接口的优先级设置为最高优先级,优先查询有线网络接口的ip地址。通过确定各个网络接口的优先级,可以为查询ip地址时提供一个查询顺序,优先查询优先级较高的网络接口的ip地址,而该优先级是可以根据目标设备的各个网络接口的网络接口信息结合实际情况进行灵活制定的,可以优先查询有线网络接口的ip地址,也可以优先查询无线网络接口的ip地址,而在目标设备安装了虚拟机之后,还可以优先查询虚拟的网络接口的ip地址等等。

步骤s103,获取目标设备的ip地址信息。

本步骤主要是获取目标设备的ip地址信息,该ip地址信息通常是以键值对的形式进行表达的,键就是物理接口名称+ip地址类型,值就是该接口名称+ip地址类型对应的具体数值。

以macos系统的终端为例,可以调用系统的getifaddrs接口获取该终端的网络接口的ip地址信息,获取到的ip地址信息以键值对的形式表达为:“en0/ipv4”=“192.168.1.101”、“en4/ipv4”=“172.18.145.13”等等。其中,如果网络接口a没有连接到网络而网络接口b、网络接口c连接到网络,则这里获取的ip地址信息包括网络接口b和网络接口c的ip地址信息,而不会包括网络接口a的ip地址信息。

步骤s104,按照优先级从高到低的顺序,从ip地址信息中依次获取与相应优先级的网络接口相对应的ip地址。

本步骤中,可以按照步骤s102确定的优先级从高到低的顺序,在步骤s103获取的ip地址信息当中依次查询与各个网络接口相对应的ip地址。具体的,假设终端的网络接口包括网络接口a、网络接口b和网络接口c,在步骤s102中可以根据这些网络接口的网络接口的接口显示名称、接口类型和物理接口名称确定优先级,例如优先级为网络接口b的优先级大于网络接口c的优先级,网络接口c的优先级大于网络接口a的优先级,则本步骤中,可以在获取的ip地址信息中优先查询网络接口b的ip地址,在具体的查询过程中,ip地址信息通常是以键值对的形式进行表达,而键则一般采用“物理接口名称+ip地址类型”进行表示,因此,可以以各网络接口的物理接口名称作为ip地址查询的关键字,在ip地址信息当中查询该物理接口名称对应的ip地址,即可从该ip地址信息中获取与网络接口相对应的ip地址。

考虑到步骤s103获取的ip地址信息,是目标设备上连接到网络的网络接口的ip地址信息,而目标设备可以设有多个网络接口,可能存在没有连接到网络的网络接口,而步骤s102所确定网络接口的优先级是目标设备的所有网络接口的优先级,因此,在本步骤根据优先级查询ip地址时,优先级较高的网络接口可能没有连接到网络而无法查询到相应的ip地址,而本步骤可以依照优先级从高到低的顺序,从优先级较高的网络接口开始,依次查询相应网络接口的ip地址,直到查询到一个ip地址,即将该ip地址作为该目标设备的有效ip地址,也就是说,如果按照网络接口b、网络接口c和网络接口a的顺序依次在ip地址信息中进行ip地址查询,而在网络接口b未连接到网络,网络接口a和c都连接到网络的情况下,则查询到的第一个ip地址为网络接口c的ip地址,则该网络接口c的ip地址作为该目标设备的有效ip地址,该有效ip地址对应于查询到的第一个网络接口对应的ip地址,而有效ip地址实际上与各网络接口的优先级以及各网络接口的网络连接情况相关联,而优先级可以根据实际的应用场景进行制定,这样,本方案能够实现在复杂的网络接口条件下,基于网络接口的优先级,准确无误地优先获取到目标设备的有效ip地址,提高获取ip地址的准确性和效率。

上述获取ip地址的方法,获取目标设备的各个网络接口的网络接口信息,根据该网络接口信息确定各个网络接口的优先级,获取目标设备的ip地址信息,然后根据上述优先级从高到低的顺序,从该ip地址信息当中依次获取与相应优先级的网络接口相对应的ip地址,该方案一方面能够完整地查询出目标设备的各个网络接口的ip地址,确保查询得到的ip地址不会遗漏,另一方面还可以根据由网络接口信息所确定的优先级,从ip地址信息中依次获取各个网络接口相对应的ip地址,有利于在复杂的网络接口条件下,快速优先筛选出有效的ip地址,提高了ip地址的获取效率。

在一个实施例中,可以通过如下方式确定各个网络接口的优先级,上述根据网络接口信息确定各个网络接口的优先级的步骤,可以包括:

确定目标网络接口;获取目标网络接口的目标网络接口信息;根据目标网络接口信息和网络接口信息确定优先级。

本实施例中,目标网络接口的数量可以是一个或多个,该目标网络接口是预先设定的,可以是该目标设备具有的网络接口,也可以是该目标设备不具有的网络接口。例如,可以将无线网络接口设置为目标网络接口,也可以将有线网络接口设置为目标网络接口,还可以将usb、蓝牙等接口作为目标网络接口等等。而目标网络接口信息是指该目标网络接口的网络接口信息,可以包括网络接口的显示名称、网络接口的接口类型和网络接口的物理接口名称等等,该目标网络接口信息主要用于确定该目标设备的各个网络接口的优先级,具体来说,可以将目标网络接口的目标网络接口信息,与目标设备的各个网络接口的网络接口信息进行对比,如将目标网络接口的接口类型与目标设备的各个网络接口的接口类型进行对比,将接口类型与目标网络接口的接口类型相同的网络接口设置为最高的优先级等等。

通过本实施例的方案,可以根据实际应用场景的需求,预先设置好目标网络接口,从而根据该目标网络接口的网络接口信息,设置目标设备的各个网络接口的优先级,如预先将无线网络接口设为目标网络接口,然后获取该目标网络接口的目标网络接口信息,如将接口类型为ieee80211和显示名称为wi-fi作为目标网络接口信息,最后将目标网络接口的接口类型、显示名称与目标设备的各个网络接口的接口类型、显示名称分别进行比较,可以将接口类型、显示名称与目标网络接口的接口类型、显示名称相同的网络接口设置为较高的优先级,这样,如果目标设备包括有线网络接口和wifi接口,则确定的优先级为wifi接口的优先级高于有线网络接口的优先级。

进一步的,在一个实施例中,上述根据目标网络接口信息和网络接口信息确定优先级的步骤,可以包括:

获取目标网络接口信息与网络接口信息的信息匹配度;根据信息匹配度确定各个网络接口的优先级。

本实施例中,信息匹配度是目标网络接口信息与网络接口信息之间的匹配程度,匹配程度越高,相应的网络接口的优先级也越高。这样可以将各个网络接口的优先级的评估条件进行量化,当目标网络接口信息与网络接口信息之间的信息匹配度越高,则将相应的网络接口的优先级设置成较高的优先级,准确设置各个网络接口的优先级。

具体的,可以以网络接口信息中的网络接口类型以及网络接口显示名称作为优先级的评估条件,来确定各个网络接口的优先级,在一个实施例中,上述获取目标网络接口信息与网络接口信息的信息匹配度的步骤可以包括:

从目标网络接口信息中提取目标网络接口的目标网络接口类型和目标网络接口显示名称;从网络接口信息中提取网络接口的网络接口类型和网络接口显示名称;根据目标网络接口类型和目标网络接口显示名称,与网络接口类型和网络接口显示名称的匹配度,获取信息匹配度。

本实施例中,目标网络接口的目标网络接口信息可以包括目标网络接口类型(interfacetype)和目标网络接口显示名称(displayname),相应的,为了对网络接口的优先级进行准确评估,目标设备的网络接口的网络接口信息也需要包括网络接口类型(interfacetype)和网络接口显示名称(displayname),在提取出目标网络接口的目标网络接口类型和目标网络接口显示名称,以及提取出网络接口的网络接口类型和网络接口显示名称后,可以将目标网络接口类型与网络接口类型进行比对,将目标网络接口显示名称与网络接口显示名称进行比对,从而可以筛选出网络接口类型与目标网络接口类型相同、且网络接口显示名称与目标网络接口显示名称相同的网络接口作为信息匹配度最高的网络接口,则该信息匹配度最高的网络接口即为优先级最高的网络接口。假设目标网络接口类型为ethernet和ieee80211,目标网络接口显示名称为wi-fi,则在目标设备的各个网络接口当中,网络接口类型为ieee80211且网络接口显示名称为wi-fi的网络接口的信息匹配度为最高,网络接口类型为ieee80211或ethernet且网络接口显示名称不是wi-fi的网络接口的信息匹配度次之,网络接口类型不是ethernet或ieee80211的信息匹配度最低,然后可以根据该信息匹配度的高低顺序相应地得到各个网络接口的优先级顺序。

在一个实施例中,还可以在上述根据目标网络接口类型和目标网络接口显示名称,与网络接口类型和网络接口显示名称的匹配度,获取信息匹配度的步骤之前,对网络接口进行过滤处理,具体步骤包括:

获取过滤关键字;若网络接口的网络显示接口显示名称中含有过滤关键字,则过滤网络接口。

本实施例中,过滤关键字是指用于对网络接口过滤的字符、数字等数据,该过滤关键字可以预先进行设定,过滤关键字的数量可以是一个或多个。当某个网络接口的网络接口信息如网络接口显示名称当中携带有这些关键字时,则将该网络接口进行过滤,例如可以将“usb”、“bluetooth”、“thunderbolt”和“bridge”作为过滤关键字,当目标设备的各个网络接口的网络接口显示名称当中包含上述四个关键字时,将相应的网络接口进行过滤,从而不需要为该网络接口设置优先级,减少了需要设置优先级的网络接口的数量,有利于获取提高ip地址的效率。

在获取各个网络接口的信息匹配度后,可以基于该信息匹配度确定网络接口的优先级,在一个实施例中,根据信息匹配度确定各个网络接口的优先级的步骤,具体可以包括:

若信息匹配度大于阈值,则将网络接口设为候选网络接口;根据各个网络接口的信息匹配度的相对大小,确定各个候选网络接口的优先级。

本实施例中,可以为信息匹配度设置一个阈值,用于对网络接口进行筛选,当网络接口的信息匹配度大于设定的阈值时,则将该网络接口设置为候选网络接口,当一个网络接口被设置为候选网络接口时,则根据该候选网络端口的信息匹配度的相对大小,对这些候选网络接口的优先级进行评估;若该网络接口的信息匹配度小于该阈值,则可以将该网络接口进行过滤,无需对这些信息匹配度小于该阈值的网络接口进行评估,以减少数据处理量,加快获取ip地址的效率,而对匹配度较低的网络接口进行过滤,从而能够过滤掉对于应用层来说无效的网络接口,便于对候选网络接口进行优先级排序,提高获取ip地址的准确性。

在获取目标设备的ip地址信息以及确定了各个网络接口的优先级后,可以按照如下步骤获取网络接口的ip地址,在一个实施例中,上述按照优先级从高到低的顺序,从ip地址信息中依次获取与相应优先级的网络接口相对应的ip地址的步骤,可以包括:

根据优先级的顺序设置各个网络接口的ip地址查询顺序;根据ip地址查询顺序,从ip地址信息中依次查询与网络接口相对应的ip地址。

本实施例中,各个网络接口的ip地址查询顺序可以由各个网络接口的优先级的高低顺序所确定,其中,优先级较高的网络接口的查询顺序,优先于优先级较低的网络接口的查询顺序。也就是说,如果网络接口a的优先级比网络接口b的优先级要高,则网络接口a的ip地址查询顺序要优于网络接口b的ip地址查询顺序。在设置好各个网络接口的ip地址查询顺序以后,按照该ip地址查询顺序,依次在ip地址信息中,查询与各个网络接口相对应的ip地址。

在ip地址的查询过程中,ip地址信息通常是以键值对的形式进行表达,而键则一般采用“物理接口名称+ip地址类型”进行表示,因此,可以以各个网络接口的物理接口名称(bsdname),按照设置好的各个网络接口的ip地址查询顺序,依次从ip地址信息中查询该物理接口名称对应的ip地址,从而得到各个网络接口相对应的ip地址。

在对ip地址进行查询时,考虑到实际的应用场景当中,无需每次都获取设备的所有网络接口的ip地址,只需要获取到该目标设备的有效ip地址即可,该有效ip地址是指在ip地址信息当中查询到的第一个网络接口对应的ip地址,在一个实施例中,上述根据ip地址查询顺序,从ip地址信息中查询与网络接口相对应的ip地址的步骤,可以包括:

从各个网络接口的网络接口信息中提取物理接口名称;根据ip地址查询顺序,依次在ip地址信息中进行ip地址查询,直到查到一个与物理接口名称相匹配的ip地址。

本实施例主要是根据各个网络接口的物理接口名称,从ip地址信息中查询到该目标设备的有效ip地址。其中,有效ip地址是指在ip地址信息当中查询到的第一个网络接口对应的ip地址,该有效ip地址实际上与各网络接口的优先级以及各网络接口的网络连接情况相关联,也就是说,在确定该目标设备的各个网络接口的ip地址查询顺序以及获取目标设备的ip地址信息以后,可以依照ip地址查询顺序在ip地址信息当中进行ip地址查询,而由于目标设备的各个网络接口不一定都已经连接了网络,因此,对于ip地址查询顺序最优的网络接口a,在ip地址查询中,可能无法得到相应的ip地址,因为该网络接口a可能没有连接到网络,则该网络接口a虽然具有较优的ip地址查询顺序,但由于没有连接到网络,所以无法将该网络接口a对应的ip地址作为该目标设备的ip地址,而对于ip地址查询顺序排第二的网络接口b,假设该网络接口b已经连接了网络,在无法查询到网络接口a的ip地址的情况下,对该网络接口b的物理接口名称进行ip地址查询,则查询到的该网络接口b的ip地址即为该目标设备的有效ip地址,而在获得目标设备的有效ip地址以后,可以停止ip地址的查询。

通过上述实施例的技术方案,能够在复杂的网络接口条件下,获取正确有效的ip地址(ipv4或ipv6),例如在有线网络接口和无线网络接口同时连接的情形下,通过设置网络接口的优先级和相应的ip地址查询顺序,可以准确无误地优先获取到无线网络接口ip地址作为有效ip地址。

为了便于更好地对上述实施例的获取ip地址的方法进行理解,将该获取ip地址的方法应用于macos系统的终端为例进行说明,在一个实施例中,提供了一种获取ip地址的方法,参考图2,图2为另一个实施例中获取ip地址的方法的流程示意图,该方法可以包括如下步骤:

步骤s201,获取终端的各个网络接口的网络接口信息。

本步骤可以调用macos系统的scnetworkinterfacecopyall接口,得到该终端的所有网络接口信息,每一个网络接口可以使用一个三元数据组<显示名称(displayname),接口类型(interfacetype),物理接口名称(bsdname)>进行表示,顺序可变,可以假设得到的所有网络接口信息包括:<displayname:ax8872a,interfacetype:ethernet,badname:en4>、<displayname:wi-fi,interfacetype:ieee80211,badname:en0>、<displayname:bluetoothpan,interfacetype:ethernet,badname:en3>、<displayname:thunderbolt1,interfacetype:ethernet,badname:en1>、<displayname:thunderbolt2,interfacetype:ethernet,badname:en2>和<displayname:thunderboltbridge,interfacetype:bridge,badname:bridge0>。

步骤s202,确定目标网络接口,获取目标网络接口的目标网络接口信息。

本步骤可以预先设定目标网络接口,并获取该目标网络接口的网络接口信息作为目标网络接口信息,例如可以将接口类型(interfacetype)为ieee80211或ethernet,且显示名称(displayname)为wi-fi,作为目标网络接口的目标网络接口信息。

步骤s203,获取目标网络接口信息与网络接口信息的信息匹配度。

本步骤可以将目标网络接口信息与终端的各个网络接口的网络接口信息进行比对,从而得到各个网络接口的信息匹配度。

步骤s204,若信息匹配度大于阈值,则将相应的网络接口设为候选网络接口,并根据各个候选网络接口的信息匹配度确定其优先级。

本步骤中,假设目标网络接口信息为接口类型(interfacetype)为ieee80211或ethernet,且显示名称(displayname)为wi-fi,则在步骤s201获取的网络接口信息当中,与<displayname:wi-fi,interfacetype:ieee80211,badname:en0>相对应的网络接口的信息匹配度为最高,而对于与<displayname:ax8872a,interfacetype:ethernet,badname:en4>、<displayname:bluetoothpan,interfacetype:ethernet,badname:en3>、<displayname:thunderbolt1,interfacetype:ethernet,badname:en1>和<displayname:thunderbolt2,interfacetype:ethernet,badname:en2>相对应的网络接口的信息匹配度则信息匹配度次之,此时,还可以将“usb”、“bluetooth”、“thunderbolt”和“bridge”作为过滤关键字,对上述网络接口进行过滤,从而最终得到与<displayname:wi-fi,interfacetype:ieee80211,badname:en0>相对应的网络接口(记为网络接口en0),以及与<displayname:ax8872a,interfacetype:ethernet,badname:en4>相对应的网络接口(记为网络接口en4),则网络接口en0和网络接口en4可以作为候选网络接口,而由于网络接口en0的信息匹配度高于网络接口en4,因此可以将优先级设为:网络接口en0的优先级设为高于网络接口en4的优先级。

步骤s205,获取终端的ip地址信息。

本步骤中,可以调用macos系统的getifaddrs接口获取该终端所有的ip地址信息。其中,getifaddrs是类unix系统中提供的一种获取地址信息的接口,linux和macos系统都支持,而windows系统中有getadapteraddres类似的api。该ip地址信息通常是以键值对的形式进行表示的,例如获取的终端的ip地址信息可以包括:“awdl0/ipv6”=“fe80::68b8:caff:fe4f:fa0b”、“en0/ipv4”=“192.168.1.101”、“en0/ipv6”=“fe80::184e:962d:73b7:469”、“en4/ipv4”=“172.18.145.13”、“en4/ipv6”=“fe80::1800:9f85:c9a6:e931”、“lo0/ipv4”=“127.0.0.1”、“lo0/ipv6”=“fe80::1”、“utun0/ipv6”=“fe80::c5af:4902:184a:1d44”、“utun1/ipv6”=“fe80::7585:a054:e043:157c”。

步骤s206,根据优先级设置相应的网络接口的ip地址查询顺序,从网络接口的网络接口信息中提取物理接口名称,并根据ip地址查询顺序,依次在ip地址信息中进行ip地址查询,直到查到一个与网络接口的物理接口名称相匹配的ip地址,将该ip地址设为该终端的有效ip地址。

本步骤中,可以按照步骤s204得到的优先级确定各个网络接口的ip地址查询顺序,由于网络接口en0的优先级设为高于网络接口en4的优先级,则ip地址查询顺序为:先查询网络接口en0的ip地址,再查询网络接口en4的ip地址,先从网络接口en0的网络接口信息中提取物理接口名称(badname:en0),然后根据该物理接口名称(badname:en0)在步骤s205得到的ip地址信息中查询相应的ip地址,可以查询到该物理接口名称(badname:en0)的ip地址包括ipv4地址:192.168.1.101,以及ipv6地址:“fe80::184e:962d:73b7:469”,则可以将该网络接口en0的ipv4地址或ipv6地址作为该终端的有效ip地址。

上述获取ip地址的方法可以应用到macos系统的终端中,能够在复杂的网络接口条件下,获取该终端的正确有效ip地址(ipv4或ipv6),例如在有线网络接口和无线网络接口同时连接的情形下,通过设置网络接口的优先级和相应的ip地址查询顺序,可以准确无误地优先获取到该终端的无线网络接口ip地址作为有效ip地址。

在一个实施例中,提供了一种获取ip地址的装置,参考图3,图3为一个实施例中获取ip地址的装置的结构框图,该获取ip地址的装置可以包括:

接口信息获取模块101,用于获取目标设备的各个网络接口的网络接口信息;

优先级确定模块102,用于根据网络接口信息确定各个网络接口的优先级;

地址信息获取模块103,用于获取目标设备的ip地址信息;

地址获取模块104,用于按照优先级从高到低的顺序,从ip地址信息中依次获取与相应优先级的网络接口相对应的ip地址。

在一个实施例中,优先级确定模块102进一步用于:确定目标网络接口;获取目标网络接口的目标网络接口信息;根据目标网络接口信息和网络接口信息确定优先级。

在一个实施例中,优先级确定模块102进一步用于:获取目标网络接口信息与网络接口信息的信息匹配度;根据信息匹配度确定各个网络接口的优先级。

在一个实施例中,优先级确定模块102进一步用于:从目标网络接口信息中提取目标网络接口的目标网络接口类型和目标网络接口显示名称;从网络接口信息中提取网络接口的网络接口类型和网络接口显示名称;根据目标网络接口类型和目标网络接口显示名称,与网络接口类型和网络接口显示名称的匹配度,获取信息匹配度。

在一个实施例中,还可以包括:

第一接口过滤模块,用于获取过滤关键字;若网络接口的网络接口显示名称中含有过滤关键字,则过滤网络接口。

在一个实施例中,优先级确定模块102进一步用于:若信息匹配度大于阈值,则将网络接口设为候选网络接口;根据各个候选网络接口的信息匹配度的相对大小,确定优先级。

在一个实施例中,还可以包括:

第二接口过滤模块,用于若信息匹配度小于阈值,则过滤网络接口。

在一个实施例中,地址获取模块104进一步用于:根据优先级的顺序设置各个网络接口的ip地址查询顺序;其中,优先级较高的网络接口的查询顺序优于优先级较低的网络接口的查询顺序;根据ip地址查询顺序,从ip地址信息中依次查询与网络接口相对应的ip地址。

在一个实施例中,地址获取模块104进一步用于:从各个网络接口的网络接口信息中提取物理接口名称;根据ip地址查询顺序,依次在ip地址信息中进行ip地址查询,直到查到一个与物理接口名称相匹配的ip地址。

本发明的获取ip地址的装置与本发明的获取ip地址的方法一一对应,关于获取ip地址的装置的具体限定可以参见上文中对于获取ip地址的方法的限定,在上述获取ip地址的方法的实施例阐述的技术特征及其有益效果均适用于获取ip地址的装置的实施例中,在此不再赘述。上述获取ip地址的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,也可以是终端,其内部结构图可以如图4所示,图4为一个实施例中计算机设备的内部结构图。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于连接外部网络。该计算机程序被处理器执行时以实现一种获取ip地址的方法。

本领域技术人员可以理解,图4中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上任一项实施例所述的获取ip地址的方法。

在一个实施例中,提供了一种计算机设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

获取目标设备的各个网络接口的网络接口信息;根据网络接口信息确定各个网络接口的优先级;获取目标设备的ip地址信息;按照优先级从高到低的顺序,从ip地址信息中依次获取与相应优先级的网络接口相对应的ip地址。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

确定目标网络接口;获取目标网络接口的目标网络接口信息;根据目标网络接口信息和网络接口信息确定优先级。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

获取目标网络接口信息与网络接口信息的信息匹配度;根据信息匹配度确定各个网络接口的优先级。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

从目标网络接口信息中提取目标网络接口的目标网络接口类型和目标网络接口显示名称;从网络接口信息中提取网络接口的网络接口类型和网络接口显示名称;根据目标网络接口类型和目标网络接口显示名称,与网络接口类型和网络接口显示名称的匹配度,获取信息匹配度。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

获取过滤关键字;若网络接口的网络接口显示名称中含有过滤关键字,则过滤网络接口。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

若信息匹配度大于阈值,则将网络接口设为候选网络接口;根据各个候选网络接口的信息匹配度的相对大小,确定优先级。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

若信息匹配度小于阈值,则过滤网络接口。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

根据优先级的顺序设置各个网络接口的ip地址查询顺序;其中,优先级较高的网络接口的查询顺序优于优先级较低的网络接口的查询顺序;根据ip地址查询顺序,从ip地址信息中依次查询与网络接口相对应的ip地址。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

从各个网络接口的网络接口信息中提取物理接口名称;根据ip地址查询顺序,依次在ip地址信息中进行ip地址查询,直到查到一个与物理接口名称相匹配的ip地址。

上述计算机设备,通过所述处理器上运行的计算机程序,一方面能够完整地查询出目标设备的各个网络接口的ip地址,确保查询得到的ip地址不会遗漏,另一方面还可以根据由网络接口信息所确定的优先级,从ip地址信息中依次获取各个网络接口相对应的ip地址,有利于在复杂的网络接口条件下,快速优先筛选出有效的ip地址,提高了ip地址的获取效率。

本领域普通技术人员可以理解实现如上任一项实施例所述的获取ip地址的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

据此,在一个实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如上任一项实施例所述的获取ip地址的方法。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取目标设备的各个网络接口的网络接口信息;根据网络接口信息确定各个网络接口的优先级;获取目标设备的ip地址信息;按照优先级从高到低的顺序,从ip地址信息中依次获取与相应优先级的网络接口相对应的ip地址。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

确定目标网络接口;获取目标网络接口的目标网络接口信息;根据目标网络接口信息和网络接口信息确定优先级。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取目标网络接口信息与网络接口信息的信息匹配度;根据信息匹配度确定各个网络接口的优先级。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

从目标网络接口信息中提取目标网络接口的目标网络接口类型和目标网络接口显示名称;从网络接口信息中提取网络接口的网络接口类型和网络接口显示名称;根据目标网络接口类型和目标网络接口显示名称,与网络接口类型和网络接口显示名称的匹配度,获取信息匹配度。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

获取过滤关键字;若网络接口的网络接口显示名称中含有过滤关键字,则过滤网络接口。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

若信息匹配度大于阈值,则将网络接口设为候选网络接口;根据各个候选网络接口的信息匹配度的相对大小,确定优先级。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

若信息匹配度小于阈值,则过滤网络接口。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

根据优先级的顺序设置各个网络接口的ip地址查询顺序;其中,优先级较高的网络接口的查询顺序优于优先级较低的网络接口的查询顺序;根据ip地址查询顺序,从ip地址信息中依次查询与网络接口相对应的ip地址。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

从各个网络接口的网络接口信息中提取物理接口名称;根据ip地址查询顺序,依次在ip地址信息中进行ip地址查询,直到查到一个与物理接口名称相匹配的ip地址。

上述计算机可读存储介质,通过其存储的计算机程序,一方面能够完整地查询出目标设备的各个网络接口的ip地址,确保查询得到的ip地址不会遗漏,另一方面还可以根据由网络接口信息所确定的优先级,从ip地址信息中依次获取各个网络接口相对应的ip地址,有利于在复杂的网络接口条件下,快速优先筛选出有效的ip地址,提高了ip地址的获取效率。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1