簡體   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