8719|8

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

esp8266作AP搭建sever时,esp8266client无法connect,报103错误 [复制链接]

  本帖最后由 kf_2010 于 2017-11-7 08:44 编辑

前情描述:两片esp8266-01s刷了micropython,一块作为服务器 一块做客户端,之前在同为STA模式连入家里路由时,已经可以顺利收发信息。程序用的是micropyth源码里network部分的自带例程。(http_client.py,http_sever_simplistic.py)
目前状况:当把带服务器程序的8266做为AP后,连接到其上作为client的8266执行s.connect()命令失败返回103错误。
补充状况:把电脑和手机连接到8266AP后,均能正常连接收发信息
               换了一片nodemcu刷了micropython后做client连接显示同样的错误
考虑可能的原因:1、路由默默的做了什么。。。弥补了我简陋的代码导致的错误
                            2、micropython自带的socket有问题。。。
自己tcp socket没有深入的理解 停留在作为工具拿来用阶段 所以不能清楚的判断可能存在的原因 渴望得到大家的帮助 谢谢
具体报错信息补充下
>>> print(addr)
('192.168.4.1', 8080)
>>> s.connect(addr)
Traceback (most recent call last):
  File "", line 1, in
OSError: [Errno 103] ECONNABORTED
>>>


客户端代码
  1. import socket
  2. s = socket.socket()
  3. addr = socket.getaddrinfo("192.168.4.1",8080)[0][-1]
  4. print(addr)
  5. s.connect(addr)
  6. s.send(b"GET / HTTP/1.0\r\n\r\n")
  7. s.close()
复制代码


服务器端代码
  1. # Do not use this code in real projects! Read
  2. # http_server_simplistic_commented.py for details.
  3. try:
  4.     import usocket as socket
  5. except:
  6.     import socket


  7. CONTENT = b"""\
  8. HTTP/1.0 200 OK

  9. Hello #%d from MicroPython!
  10. """

  11. s = socket.socket()
  12. ai = socket.getaddrinfo("0.0.0.0", 8080)
  13. addr = ai[0][-1]

  14. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

  15. s.bind(addr)
  16. s.listen(5)
  17. print("Listening, connect your browser to http://<this_host>:8080/")

  18. counter = 0
  19. while True:
  20.     res = s.accept()
  21.     client_s = res[0]
  22.     client_addr = res[1]
  23.     req = client_s.recv(4096)
  24.     print("Request:")
  25.     print(req)
  26.     client_s.send(CONTENT % counter)
  27.     client_s.close()
  28.     counter += 1
  29.     print()




复制代码

                     

         [ ... ][ mw_shl_code = Python,真]进口插座

最新回复

楼主解决了吗?我现在也遇到这样的问题   详情 回复 发表于 2021-4-1 13:47
点赞 关注
 
 

回复
举报

4

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我把代码补充下吧。。。这样方便点
客户端代码
  1. import socket
  2. s = socket.socket()
  3. addr = socket.getaddrinfo("192.168.1.103",8080)[0][-1]
  4. print(addr)
  5. s.connect(addr)
  6. s.send(b"GET / HTTP/1.0\r\n\r\n")
  7. s.close()[code]# Do not use this code in real projects! Read


  8. 服务器端代码
  9. # http_server_simplistic_commented.py for details.
  10. try:
  11.     import usocket as socket
  12. except:
  13.     import socket


  14. CONTENT = b"""\
  15. HTTP/1.0 200 OK

  16. Hello #%d from MicroPython!
  17. """

  18. s = socket.socket()
  19. ai = socket.getaddrinfo("0.0.0.0", 8080)
  20. addr = ai[0][-1]

  21. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

  22. s.bind(addr)
  23. s.listen(5)
  24. print("Listening, connect your browser to http://<this_host>:8080/")

  25. counter = 0
  26. while True:
  27.     res = s.accept()
  28.     client_s = res[0]
  29.     client_addr = res[1]
  30.     req = client_s.recv(4096)
  31.     print("Request:")
  32.     print(req)
  33.     client_s.send(CONTENT % counter)
  34.     client_s.close()
  35.     counter += 1
  36.     print()



复制代码
[/code]
 
 
 

回复

1万

帖子

24

TA的资源

版主

板凳
 
将两个ESP8266的程序都贴出来,大家一起分析一下
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

4
 
dcexpert 发表于 2017-11-6 22:19
将两个ESP8266的程序都贴出来,大家一起分析一下

版主大大 我贴好代码了。。我现在的解决思路是找网络助手的源码 对比看看是不是我的代码太简陋  socket的那个括号里有好几个选项 是不是需要设置下 因为没有设置 所以在局域网内 没有路由的协助 无法还原或修复某些错误  如果这个不行 就去对比socket的源码和micropython的socket源码。。。研究下协议。。。介个貌似工作量好大。。。我查了查103错误是TCP三次握手中 客户端自己发出了REST终止了整个套接字的连接 所以问题是不是主要存在在客户端的代码上?  哈哈哈 是不是没有我想的这么复杂 求版主大大给点方向 具体操作我会自己努力完成的 谢谢
 
 
 

回复

1万

帖子

24

TA的资源

版主

5
 
等抽空分析一下,不过手头只有1个ESP8266,需要再去找一个。
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

6
 
本帖最后由 kf_2010 于 2017-11-7 19:18 编辑
dcexpert 发表于 2017-11-7 09:56
等抽空分析一下,不过手头只有1个ESP8266,需要再去找一个。

嘎嘎嘎 好嘞 谢谢版主大大 我自己也继续想办法...   
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

7
 

解决了吗 我也这样的

 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

8
 

联系我707469161@qq.com

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 

楼主解决了吗?我现在也遇到这样的问题

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表