我正在使用带有两个NodeMCU ESP8266开发板的MicroPython。我的目标是将一个连接到另一个,这样他们就可以交换信息。其中一个主板正在运行服务器程序,其AP已启动。另一个连接到另一个主板的AP并尝试连接。
服务器运行正常,我可以使用RAW连接(将我的PC连接到ESP8266 AP)与Kitty连接。相反,客户端在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.")
答案 0 :(得分:0)
这个问题的愚蠢答案是,我最终切换了电路板之间的程序,因此它们都运行着“差不多”的问题。相同(ESSID和密码)接入点。虽然客户端已正确连接到服务器AP,但我猜有些IP冲突正在避免套接字连接。