第20章 无线网络
第二十章 无线网络
1. 连接WIFI
1.1 STA模式
STA模式(Station):庐山派作为客户端连接到现有无线网络
network.WLAN(network.STA_IF)
: 初始化一个 WLAN 对象,并设置为STA 模式。(站模式,可以连接到外部 WiFi 接入点)sta.active(bool)
: 激活或关闭 STA 模式。当传入True
时激活,传入False
时关闭。如果不带参数调用,则返回当前激活状态。sta.status()
: 返回 STA 的当前状态,如是否已连接到 AP。当不传参数时,返回详细的连接信息,Sta
模式时,返回rssi
: 连接信号质量和ap
: 连接的热点名称sta.connect(ssid, password)
: 尝试连接到指定的 SSID 和密码的 AP。此方法不返回是否连接成功的直接结果,但可以通过检查sta.status()
或sta.isconnected()
来获取连接状态。sta.ifconfig()
: 返回 STA 的 IP 配置信息,如 IP 地址、子网掩码、网关和 DNS 服务器等。sta.isconnected()
: 返回True
,表示已经成功连接到Wi-Fi;返回False
,表示未连接。sta.disconnect()
: 断开与当前Wi-Fi接入点的连接。
1.2 基础示例
import network, time
SSID = "iqoo"
PASSWORD = "12345678"
def sta_test():
sta = network.WLAN(network.STA_IF) # 初始化STA模式
if not sta.active():
sta.active(True) # 使能STA模式
print("WIFI模块激活状态:", sta.active())
print("连接状态:", sta.status())
# 扫描周围WiFi
wifi_list = sta.scan()
for wifi in wifi_list:
ssid = wifi.ssid
rssi = wifi.rssi
print(f"SSID: {ssid}, 信号强度: {rssi}dBm")
print(f"正在连接到 {SSID}....")
sta.connect(SSID, PASSWORD) # 连接到指定的WiFi
max_wait = 5
while max_wait > 5:
if sta.isconnected():
break
max_wait -= 1
time.sleep(1)
sta.connect(SSID, PASSWORD) # 连接到指定的WiFi
print("剩余等待次数:", max_wait, "次")
while sta.ifconfig()[0] == '0.0.0.0':
pass
if sta.isconnected():
print("WIFI连接成功!")
# 打印信息
ip_info = sta.ifconfig()
print(f"IP地址: {ip_info[0]}")
print(f"子网掩码: {ip_info[1]}")
print(f"网关: {ip_info[2]}")
print(f"DNS: {ip_info[3]}")
else:
print("WIFI连接失败!")
sta_test()
while True:
time.sleep(0.5)
2. 创建热点
2.1 AP模式
AP模式(Access Point):庐山派作为热点供其他设备连接,不过庐山派自己也没有连接如网络,所以其他设备连入庐山派的热点也无法上网,但是可以和庐山派互相通讯。
network.WLAN(network.AP_IF)
: 初始化一个 WLAN 对象,并设置为 AP 模式。ap.active(bool)
: 激活或关闭 AP 模式。当传入True
时激活,传入False
时关闭。如果不带参数调用,则返回当前激活状态。ap.config(ssid=None, key=None ...)
: 配置 AP 的参数,如 SSID、密码、频道等。如果不带任何参数调用,则返回当前配置。ap.status()
: 返回 AP 的当前状态。
2.2 基础示例
import network, time
AP_SSID = "K230_AP"
AP_KEY = "12345678"
def ap_test():
ap = network.WLAN(network.AP_IF)
if not ap.active():
ap.active(True)
print("AP模块激活状态:", ap.active())
ap.config(ssid=AP_SSID, key=AP_KEY)
print("\n热点已经创建:")
print(f"SSID: {AP_SSID}")
print(f"Channel: {AP_KEY}")
time.sleep(3)
ip_info = ap.ifconfig()
print(f"IP地址: {ip_info[0]}")
print(f"子网掩码: {ip_info[1]}")
print(f"网关: {ip_info[2]}")
print(f"DNS: {ip_info[3]}")
while True:
# 获取当前连接的客户端数量
clients = ap.status('stations')
print(f"\n当前连接的客户端数量: {len(clients)}")
time.sleep(0.5)
ap_test()
本文作者:hazy1k
本文链接:https://www.cnblogs.com/hazy1k/p/18731894
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步