OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3617|回复: 2

请教WIFI模块ESP8266的问题。

[复制链接]

82

主题

396

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2137
金钱
2137
注册时间
2013-8-26
在线时间
218 小时
发表于 2017-12-27 16:24:01 | 显示全部楼层 |阅读模式
10金钱
用到该模块做的一个板子,给服务器上传数据。上位机用助手建立一个TCP服务器,板子先配置好后,主程序就一直给服务器上传数据(上传成功后没有反馈啊)
如果某种原因,服务器关掉一段时间后重启。那么做的板子(带ESP8266)还能给服务器上传数据吗?做的板子一直给着电的,而且也是在主程序中跑的。
如果在服务器停掉的时间段,板子给服务器上传数据不成功的话,有反馈吗??怎么判断上传数据不成功呢?

最佳答案

查看完整内容[请看2#楼]

TCP连接成功/失败,是有返回值的。你根据这个做好重连机制,就行了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-12-27 16:24:02 | 显示全部楼层
TCP连接成功/失败,是有返回值的。你根据这个做好重连机制,就行了。
回复

使用道具 举报

18

主题

453

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2014
金钱
2014
注册时间
2016-12-27
在线时间
136 小时
发表于 2017-12-28 10:38:50 | 显示全部楼层
这得看你的上位机TCP服务器重启时的处理机制。


(1) 如果你的上位机TCP服务器在关闭重启时,服务器后台会先主动切断TCP Client的套接字链接(正如你在调试助手里点击“断开”按钮那样,当你点击断开时,调试助手的后台)会给TCP客户端发送一个“断开”链接的通知。这个时候,TCP客户端(在你的例子里也就是ESP8266模组)就会监控到TCP链接被断开了,此时,如果你继续去发送,就会立刻报告链接断开之类的错误。

(2)如果你的上位机TCP服务器在重启时,比如异常重启,一般就不会(或者说来不及)向TCP客户端发送断开的通知。此时,虽然TCP服务器关机或复位了,但是TCP客户端这边是并不会知道该链接已经断开了的,此时如果你继续去请求ESP8266作为TCP客户端发送数据,TCP客户端依然会去发送,只是此时得不到ACK就会返回超时错误。或者一段时间超时后,看你的TCP客户端的处理机制,有可能会因为超时自动断开(删除)这个套接字,此时,你再去发送时才会返回被断开的错误。

因此,作为TCP服务器,为了确保及时地或许客户端已经断开(包括异常的情形),一般在TCP服务器端设置一个自动断开的超时时间,ESP8266作为TCP服务器时,支持这个超时参数的设置,如果不设置,就会很长,对于客户端的异常断开,不会准“实时的”监控到。

而作为TCP客户端(你这里的具体例子),如果你想让客户端及时的监控到服务器已经异常,可以启用Keep-Alive机制,提高对链接实际断开的实时监控。

供参考!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表