![](/img/trans.png)
[英]ECONNABORTED when POSTing from micropython on NodeMCU using requests
[英]Socket error ECONNABORTED connecting two MicroPython boards
我将MicroPython与两个NodeMCU ESP8266开发板一起使用。 我的目标是彼此连接,以便它们可以交换信息。 其中一块板正在运行服务器程序,并且其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.")
这个问题的愚蠢答案是,我最终在板之间切换了程序,因此它们都以“几乎”相同的(ESSID和密码)访问点运行。 尽管客户端已正确连接到服务器AP,但我想某些IP冲突正在避免套接字连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.