EG800AK,socket运行过程中出现[Errno 103] ECONNABORTED

测试代码:

import usocket, osTimer, log, utime

log.basicConfig(level=log.INFO)
socket_log = log.getLogger("SOCKET")

sock = None

def send_loop(arg):
    if sock == None:
        return

    try:
        ret = sock.send(
            "1234567890123456789012345678901234567890123456789012345678901234567890123456789013245678901324567890013245678901324567890"
        )
        socket_log.info("send %d bytes" % ret)
    except Exception as e:
        socket_log.error("send error: %s" % str(e))


if __name__ == "__main__":
    sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
    sock.connect(("115.120.239.161", 24100))

    timer = osTimer()
    timer.start(1000, 1, send_loop)

    status = 0

    while True:
        status = sock.getsocketsta()
        print(status)

        if status == -1:
            print("reconnect")
            try:
                sock = None
                sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
                sock.connect(("115.120.239.161", 24100))
            except Exception as e:
                socket_log.error("error: %s" % str(e))

        try:
            data = sock.recv(256)
            if data:
                socket_log.info("recv %s bytes: %s" % (len(data), data.decode()))
        except Exception as e:
            socket_log.error("recv error: %s" % str(e))
        utime.sleep_ms(100)

用的是合宙的测试服务器,上面测试代码出现[Errno 103] ECONNABORTED的几率比较低,可能一两个小时也不会出现,也可能很快,几十分钟就会出现
日志结果如下:

另外我使用我的程序时,出现的几率比较高,报错如下所示,出现ECONNABORTED时进行重连,但是重连会提示EHOSTUNREACH,最后设备会重启,但这个重启不是我调用的;并且数据上报频率低时,出现的几率会降低。

客户反馈问题已解决,可以分享下您的解决经验嘛