繁体   English   中英

套接字错误ECONNABORTED连接两个MicroPython板

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM