![](/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.