请选择 进入手机版 | 继续访问电脑版
论坛
登录 | 立即注册
查看: 1154|回复: 11

espconn_send

[复制链接]

1

主题

7

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2019-8-28 15:08:35 | 显示全部楼层 |阅读模式
espconn_send 一次发送数据包的最大长度是多少?
回复

使用道具 举报

1

主题

77

帖子

546

积分

高级会员

Rank: 4

积分
546
发表于 2019-8-28 22:25:08 | 显示全部楼层
TCP协议最大长度是 1460 字节,跟MCU函数没关系,MCU函数可以做到分包连续发送,只要内存够大,想多少就多少。
回复

使用道具 举报

1

主题

7

帖子

29

积分

新手上路

Rank: 1

积分
29
 楼主| 发表于 2019-8-29 08:55:59 | 显示全部楼层
abcrazy 发表于 2019-8-28 22:25
TCP协议最大长度是 1460 字节,跟MCU函数没关系,MCU函数可以做到分包连续发送,只要内存够大,想多少就多 ...

浏览器向ESP8266 web server 请求数据时是会连续发送很多GET请求给ESP8266 web server,作为web server,一次收到这么多请求,应该怎么响应?
在接收函数里如果我按照这样返回,10张图片中,有个别会加载不上,有时也会乱码,不知什么原因?
代码如下:
         else if(os_strncmp(pdata,"GET /image/button_explain.png HTTP/1.1",os_strlen("GET /image/button_explain.png HTTP/1.1")) == 0)
        {
                 align_strlen  = GET_ALIGN_STRING_LEN(RESPONSE_BUTTON_EXPLAIN_DATA_SIZE);
                readbuf=(uint32*)os_malloc(align_strlen);
                spi_flash_read(RESPONSE_BUTTON_EXPLAIN_SEC_ADDR,readbuf,align_strlen);
                sbuf = (uint8*)readbuf;
                espconn_sent(pesp_conn,sbuf,RESPONSE_BUTTON_EXPLAIN_DATA_SIZE);
                F_button_explain = 1;
                os_free(readbuf);
        }
回复

使用道具 举报

1

主题

7

帖子

29

积分

新手上路

Rank: 1

积分
29
 楼主| 发表于 2019-8-29 09:16:30 | 显示全部楼层
1)ESP8266 的发送数据缓冲区的大小是2920,可以缓冲8包数据,是不是可以理解为一次可以写入缓冲区的数据最大是2920*8=23360个字节。实测好像又不止,一次写入26517字节也可以发送,应该怎么理解?
2)发送成功回调函数,是指发送大小为2920一包数据数据时回调,还是把写入缓冲区的所有数据到发送完才回调?我测试的结构是后者,是不是正确?
3)如果前面数据没有发送完,接着又写入发送数据,而且写入的时候没有任何错误提示,结果会怎样?
4)HTTP1.1的每一个GET请求收到后要马上进行处理吗?如果前一个请求数据没有发送完成,后面又来了多个请求,根本做不到请求试试响应,该怎么处理?
回复

使用道具 举报

1

主题

77

帖子

546

积分

高级会员

Rank: 4

积分
546
发表于 2019-8-29 09:30:43 | 显示全部楼层
这我不懂了,我自己理解是,MCU不比电脑,做不到web服务器的并发性,电脑可以多核多线程大内存同时处理多个不同IP的访问请求。MCU只有单线程,你在发图片时候,也许MCU忙碌,忽略掉期间的请求。也可能是内部限制了请求数量,超过4个请求都不会处理。你要做服务器的话,建议你改用树莓派吧,这个真不适合做服务器。
回复

使用道具 举报

1

主题

7

帖子

29

积分

新手上路

Rank: 1

积分
29
 楼主| 发表于 2019-8-29 10:02:43 | 显示全部楼层
1)我用了很多方法进行了测试,都以失败而告终!如果等到第一个GET请求响应完再发第二个响应,结果图片会加载到错误位置,原因是浏览器认为是最近一个请求的响应。
2)要让浏览器能正确解析,必须要做到请求和响应一一对应才行。
回复

使用道具 举报

1

主题

77

帖子

546

积分

高级会员

Rank: 4

积分
546
发表于 2019-8-29 10:27:31 | 显示全部楼层
或许你可以用 SDK RTOS 3.0 试试,这个版本源码公开。如果你真想研究 RTOS 版本, 建议你买 ESP32 来学,因为ESP8266 RTOS所有教程都是从 ESP32 改编过来的,我一开始就研究 ESP8266 RTOS 遇到很多问题,浪费很多时间,感觉一开始就买 ESP32 学好很多,双 CPU 性能强,贵不了多少。强调: RTOS 源码公开!有不妥的地方就找源码看。
回复

使用道具 举报

1

主题

7

帖子

29

积分

新手上路

Rank: 1

积分
29
 楼主| 发表于 2019-8-29 11:39:36 | 显示全部楼层
GET http://192.168.4.1/image/button_off.png net::ERR_SOCKET_NOT_CONNECTED

图片发送失败,浏览器端就看到断线的消息,为什么TCP连接会中断呢?
回复

使用道具 举报

1

主题

7

帖子

29

积分

新手上路

Rank: 1

积分
29
 楼主| 发表于 2019-8-29 11:44:50 | 显示全部楼层
gizmode_logo.png        (pending)                192.168.4.1/:299        0 B        Pending        button_set_choose.png        200        png        (index)        975 B        105 ms        button_explain.png        200        png        (index)        1.9 KB        105 ms        button_off.png        200        png        (index)        2.7 KB        88 ms        button_on.png        200        png        (index)        1.9 KB        120 ms        icon_electricity_three.png        (pending)                (index)        0 B        Pending        button_home_introduction.png        200        png        (index)        2.5 KB        64 ms        button_home_log.png        200        png        (index)        2.2 KB        78 ms        button_home_back.png        200        png        (index)        905 B        69 ms        button_complete.png        200        png        (index)        1.2 KB        50 ms        zepto.min.js        (pending)        script        (index)        0 B        Pending        index.js        (pending)        script        (index)        0 B        Pending

如果没有出现断线,8张图片上传没有问题
回复

使用道具 举报

1

主题

77

帖子

546

积分

高级会员

Rank: 4

积分
546
发表于 2019-8-29 12:54:06 | 显示全部楼层
不知道,函数只有功能介绍,无法知道内部如何实现。你还是考虑用esp32开发吧,有 web server 例程,不用你 TCP 开发。你留意下客户端请求的时候,使用同一个端口号请求还是多个端口号请求,如果是多个端口号请求,那你要把之前的端口号马上释放,不然超内存会重启。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|安信可论坛    

GMT+8, 2020-7-8 21:47 , Processed in 0.022135 second(s), 12 queries , Redis On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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