network
— 网络配置¶
本模块提供了网络驱动程序和路由配置。要使用此模块,必须安装带有网络功能的 MicroPython 变体/构建。特定硬件的网络驱动程序位于此模块中,并用于配置硬件网络接口。通过配置的接口提供的网络服务可以通过 socket
模块进行使用。
例如:
# connect/ show IP config a specific network interface
# see below for examples of specific drivers
import network
import time
nic = network.Driver(...)
if not nic.isconnected():
nic.connect()
print("Waiting for connection...")
while not nic.isconnected():
time.sleep(1)
print(nic.ifconfig())
# now use socket as usual
import 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 移植版本 实现的所有网络接口类的(隐式)抽象基类。这意味着 MicroPython实际上并不提供 AbstractNIC
类,而是任何实际的 NIC 类,如以下各节中所述,都会实现此处描述的方法。
- class network.AbstractNIC(id=None, ...)¶
实例化网络接口对象。参数取决于网络接口。如果有多个相同类型的接口,则第一个参数应为 id
。
- AbstractNIC.active([is_active])¶
激活 (“up”) 或停用 (“down”) 网络接口,如果传递了布尔参数。否则,如果未提供参数,则查询当前状态。大多数其他方法都需要活动接口(在非活动接口上调用它们的行为是未定义的)。
- AbstractNIC.connect([service_id, key=None, *, ...])¶
将接口连接到网络。此方法是可选的,仅适用于不是 “始终连接” 的接口。如果没有给出参数,则连接到默认(或唯一)服务。如果给定单个参数,则它是要连接的服务的主要标识符。它可能需要与访问所述服务所需的密码。还可以有进一步的任意关键字参数,这取决于网络介质类型和/或特定设备。参数可用于:a)指定替代服务标识符类型;b)提供附加的连接参数。对于各种介质类型,有不同的预定义/推荐参数集,其中包括:
WiFi: bssid keyword to connect to a specific BSSID (MAC address)
- AbstractNIC.disconnect()¶
断开网络连接。
- AbstractNIC.isconnected()¶
如果连接到网络,则返回
True
,否则返回False
。
- AbstractNIC.scan(*, ...)¶
扫描可用的网络服务/连接。返回发现的服务参数的元组列表。对于各种网络媒体,有不同的预定义/推荐元组格式变体,其中包括:
WiFi: (ssid, bssid, channel, RSSI, security, hidden)。还可能有其他字段,特定于特定设备。
该函数可能接受其他关键字参数以过滤扫描结果(例如,扫描特定服务、特定信道上的服务、特定集合的服务等),并影响扫描持续时间和其他参数。在可能的情况下,参数名称应与 connect() 中的参数名称匹配。
- AbstractNIC.status([param])¶
查询接口的动态状态信息。当不带参数调用时,返回值描述网络链接状态。否则,param 应该是命名要检索的特定状态参数的字符串。
返回类型和值取决于网络媒体/技术。可能支持的一些参数包括:
WiFi STA: 使用
'rssi'
检索 AP 信号的 RSSIWiFi AP: 使用
'stations'
检索连接到 AP 的所有 STA 的列表。该列表包含形式为 (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 SSID) and WiFi channel ap.config(ssid='My AP', channel=11) # Query params one by one print(ap.config('ssid')) print(ap.config('channel'))
特定网络类实现¶
以下具体类实现了 AbstractNIC 接口,并提供了一种控制各种类型网络接口的方法。
网络函数¶
以下是网络模块中可用的函数。
- network.country([code])¶
获取或设置用于无线电遵从的两个字母 ISO 3166-1 Alpha-2 国家代码。
如果提供了 code 参数,则国家将设置为此值。如果不带参数调用该函数,则返回当前国家。
默认代码
"XX"
代表 “全球” 区域。
- network.hostname([name])¶
获取或设置在网络上标识此设备的主机名。它将由所有接口使用。
- 此主机名用于:
在客户端请求中发送到DHCP服务器。(如果使用DHCP)
通过 mDNS 广播。(如果启用)
如果提供了 name 参数,则主机名将设置为此值。如果不带参数调用该函数,则返回当前主机名。
更改主机名通常仅在连接时应用。对于DHCP来说,这是因为主机名是DHCP客户端请求的一部分,并且大多数移植版本中mDNS的实现仅在连接期间初始化主机名一次。因此,您必须在激活/连接网络接口之前设置主机名。
主机名的长度限制为 32 个字符。MicroPython port 可能选择出于内存原因设置较低的限制。如果给定的名称不合适,则会引发
ValueError
。默认主机名通常是板子的名称。
- network.phy_mode([mode])¶
获取或设置PHY模式。
如果提供了 mode 参数,则 PHY 模式将设置为此值。如果不带参数调用该函数,则返回当前 PHY 模式。
- 可能的模式定义为常量:
MODE_11B
– IEEE 802.11b,MODE_11G
– IEEE 802.11gMODE_11N
– IEEE 802.11n。
可用性:ESP8266。