我将 MicroPython 与两个 NodeMCU ESP8266 开发板一起使用。我的目标是将一个与另一个连接起来,这样他们就可以交换信息。其中一块板正在运行一个服务器程序,并且它的 AP 已启动。另一个连接到另一个板的AP并尝试连接。
服务器运行良好,我可以使用 Kitty 使用 RAW 连接(将我的 PC 连接到 ESP8266 AP)连接到它。相反,客户端在 socket.connect() 中失败并抛出 ECONNABORTED 异常。我使用了不同的设置,但它们似乎都不起作用。如何连接我的两个板?我是一个有套接字的新手,所以这可能不是 MicroPython 特定的问题,而是 Python 问题。
编辑:使用相同的代码从 PC 连接时没有问题。该问题似乎不包括通过服务器接入点连接到服务器 ESP8266 的客户端 ESP8266。也许是一个 MicroPython 错误?
服务器代码:
import network
import socket
def runServer():
try:
ap_if = network.WLAN(network.AP_IF)
ap_if.active(True)
ap_if.config(essid='MicroPy-AP', password='micropythoN')
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind( ('', 8266) )
s.listen(1)
print("Waiting for a client...")
client, client_ip = s.accept()
print("Connected!")
finally:
print("Closing socket...", end=' ')
s.close()
print("Done.")
客户端代码:
import network
import socket
def runClient():
try:
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('MicroPy-AP', 'micropythoN')
while not sta_if.isconnected():
pass
sta_if.ifconfig()
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
print("Connecting...")
s.connect( ('192.168.4.1', 8266) )
finally:
print("Closing socket...", end=' ')
s.close()
print("Done.")