esp32 报错 ERRNO 104
服务端
import requests, json
from flask import Flask, session, make_response, redirect, url_for, request, jsonify
#实例化FLASK模块
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
#定义函数方便其他路由进行跳转
def data_handler() :
global traceback
#traceback为返回字典results键键值中正序第一项即置信度的值
traceback = '0.8'
d = {"confidence":traceback}
data = json.dumps(d, indent=4)
r = make_response(jsonify({'confidence': traceback}))
#将置信度传递至浏览器cookie中
r.set_cookie('confidence', traceback)
e = request.cookies.get('confidence')
print(data)
return r
app.run(port=24401, debug=True)
#port端口号 默认于127.0.0.1运行,host设置ip进行运行(default: 127.0.0.1:80)
ESP32(micropython)
import urequests, networks
r = urequests.get("http://127.0.0.1:24401")
print(r.text)
报错信息:
"", line5 , in
"urequests.py", line116, in get
"urequests.py", line 60, in request
Error: [Errno 104] ECONNRESET
FLASK运行应该在pc上,那你就指定下IP,然后将ESP32和PC置于同一局域网内,然后指定IP进行连接。
127.0.0.1是特指本机IP,两个都在各自本机上,怎么能互相访问上呢?
econnreset是连接被重置的错误,一般是服务端的问题。导致客户端报连接不上的错误,请检查服务端是否有异常,是否正常启动,是否可访问,端口是否打开等。其次检查是否有设置最大空闲时间这样的东西从而导致连接被重置。
可能是网络连接中断或者网络连接超时导致的,检查下网络连接是否正常
错误代码 "ERRNO 104" 指示网络连接已中断。该错误可能是由于以下原因导致的:
网络中断:如果您的 ESP32 正在尝试连接到网络,并且网络已中断,则可能会出现此错误。
无效的 IP 地址:如果 ESP32 正在尝试连接到无效的 IP 地址,则也可能会出现此错误。
网络超时:如果 ESP32 等待网络连接超时,则也可能会出现此错误。
解决方案:
重新连接到网络:如果网络中断,请重新连接到网络。
检查 IP 地址:确保您使用的 IP 地址有效。
增加超时时间:如果网络超时,请增加超时时间,以便 ESP32 有足够的时间来连接到网络。
Error: [Errno 104] ECONNRESET这种错误一般是服务端主动断开连接,读取数据时被意外重置。
主要排查方向:
1、服务器启动是否正常,通过服务器查看定位报错原因
2、检查网络和IP地址链接情况,是否受这些因素影响
ERRNO 104表示连接失败,没有从远程服务器获得回应,通常是因为没有连接到正确的IP地址或端口号,也有可能是服务器宕机或者网络问题导致的。
解决办法:
检查IP地址和端口号是否正确
检查服务器是否正常运行
重新检查网络连接,排除网络问题。
以下是一段示例代码:
导入套接字
建立套接字连接
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
设置服务器地址和端口号
server_address = ('192.168.1.100', 8000)
尝试连接到服务器
尝试:
S.连接(server_address)
除了套接字错误作为 e:
如果 e.errno == 104:
print(“连接失败,错误码:ERRNO 104”)
还:
print(“连接失败,错误码:”, e.errno)
还:
print(“连接成功”)
最后:
s.close()