network — 网络配置

该模块提供网络驱动程序和路由配置。特定硬件的网络驱动程序可以在此模块中使用,并用于配置硬件网络接口。然后可通过socket模块使用配置的接口。要使用该模块,必须安装固件 usocket 的网络构建。

示例

# connect/ show IP config a specific network interface
# see below for examples of specific drivers
import network
import utime
nic = network.Driver(...)
if not nic.isconnected():
    nic.connect()
    print("Waiting for connection...")
    while not nic.isconnected():
        utime.sleep(1)
print(nic.ifconfig())

# now use usocket as usual
import usocket as socket
addr = socket.getaddrinfo('micropython.org', 80)[0][-1]
s = socket.socket()
s.connect(addr)
s.send(b'GET / HTTP/1.1\r\nHost: micropython.org\r\n\r\n')
data = s.recv(1000)
s.close()

常见的网络适配器接口

本节描述针对不同硬件的 MicroPython ports 不同端口实现的所有网络接口类的一个(隐含的)抽象基类。 这也就意味着MicroPython实际上不会提供 AbstractNIC 类,但是正如以下部分中所述,任何实际的 AbstractNIC 类实现此处所述的方法。

class network.AbstractNIC(id=None, ...)

将一个网络接口对象实例化。参数取决于网络接口。若同种类接口超过一个,则首个参数应为 id

AbstractNIC.active([is_active])

若布尔值参数被传递,则激活(“up”)或禁用(“down”)网络接口。否则若未提供参数,则查询当前状态。 大多数其他方法需要一个激活接口(在未激活接口上的回调行为尚未定义)。

AbstractNIC.connect([service_id, key=None, *, ...])

将接口连接到网络。该方法为可选的,且仅适用于不为“总是连接”的接口。若未给定任何参数, 则连接到默认设备(或唯一设备)。若给定一个参数,即为连接的设备的主要标识符。 可能附带一个访问该服务的密钥(密码)。根据网络介质类型和/或特定设备,可有更多任意关键字参数。 参数可用于:a)指定可选的服务标识符种类;b)提供额外的连接参数。对于不同媒介种类,有不同的预定义/推荐参数集,其中:

  • WiFi: 由BSSID(MAC地址)连接的bssid密钥,而非访问点名称

AbstractNIC.disconnect()

断开网络连接。

AbstractNIC.isconnected()

若连接到网络,则返回 True ,否则返回 False

AbstractNIC.scan(*, ...)

扫描可用的网络设备/连接。返回一个发现的设备参数的元组列表。对于不同的网络媒介,有不同的预定义/推荐元组格式,其中:

  • WiFi: (ssid, bssid, channel, RSSI, authmode, hidden). 可能有特定于某一设备的进一步的域。

该函数可能接受附加关键字参数以过滤扫描结果(例如:在特定通道上扫描某一种特定服务等), 并影响扫描持续时间和其他参数。在可能之处,参数名称应与connect()中的相匹配。

AbstractNIC.status([param])

查询接口的状态信息。不使用参数调用的时候,会返回网络连接状态,否则 param 将作为需要查询的特定参数。

返回接口的具体状态,值取决于网络介质/技术。

  • WiFi STA: 使用 'rssi' 获得AP信号的RSSI。

  • WiFi AP: 使用 'stations' 来获得所有的STA与AP的连接状态。并以(MAC,RSSI)的格式存于列表中。

AbstractNIC.ifconfig([(ip, subnet, gateway, dns)])

获取/设置IP-层的网络接口参数:IP地址、子网掩码、网关。DNS服务器。当无参数调用时, 该方法返回一个包含上述信息的4元组。设置上述值,请使用所需信息传递一个4元组。例如:

nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
AbstractNIC.config('param')
AbstractNIC.config(param=value, ...)

获取或设置网络接口参数。这些方法允许处理标准IP配置(由 ifconfig() 处理)外的额外参数。 这些参数包括特定于网络和特定于硬件的参数以及状态值。设置参数,应使用关键字参数语法, 且多个参数应一次设置。查询时参数名称应作为一个字符串查询,且一次只能查询一个参数:

# Set WiFi access point name (formally known as ESSID) and WiFi channel
ap.config(essid='My AP', channel=11)
# Query params one by one
print(ap.config('essid'))
print(ap.config('channel'))

特定network网络类实现

下面的具体类实现了AbstractNIC接口,并提供了一种控制各种网络接口的方法。

网络函数

下面的函数在network模块中可用

network.phy_mode([mode])

获取或设置PHY模式

如果有 mode参数,将设置其模式。如果函数无参数调用,则返回当前的模式。

可能的模式如下
  • MODE_11B – IEEE 802.11b,

  • MODE_11G – IEEE 802.11g,

  • MODE_11N – IEEE 802.11n.

Availability: ESP8266.