打印
[应用相关]

STM32 LWIP连续发送问题请教。

[复制链接]
4629|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yicaiwu|  楼主 | 2013-11-19 09:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的STM32+LWIP的方案,想要发送10k字节的数据,用的一个for循环每次调用tcp_write(serve_pcb,pp,1000,0);发送1000字节数据,问题是每个for循环下来只能发送1000字节。
  for(i=0;i<10;i++)
{ tcp_write(serve_pcb,pp,1000,0);
   tcp_output(serve_pcb);
}

看了网上的说明修改了#define TCP_SND_QUEUELEN   (3000 * TCP_SND_BUF)/TCP_MSS//连续tcp_write次数
但是没什么效果。

如果降低每次发送的字节数,最多一个for循环能发送1400字节。
请问大家又这方面的经验吗?
沙发
prayerwind| | 2013-11-19 10:23 | 只看该作者
不是太明白你的意思,你是指在多次调用tcp_write会出现失败的问题吗?

使用特权

评论回复
板凳
yicaiwu|  楼主 | 2013-11-19 12:19 | 只看该作者
prayerwind 发表于 2013-11-19 10:23
不是太明白你的意思,你是指在多次调用tcp_write会出现失败的问题吗?

对啊,连续调用tcp_write后面的数据就发不出去了

使用特权

评论回复
地板
pattywu| | 2013-11-19 12:33 | 只看该作者
1、要说明用的哪个版本的LwIP,不同版本的LwIP,在发送方面有所不同。
2、LwIP是单片机上的TCP/IP协议,不是PC机上的TCP/IP协议,在内存使用方面要注意的。

使用特权

评论回复
5
prayerwind| | 2013-11-19 16:00 | 只看该作者
1. 你的原意是调用tcp_write将数据写入发送队列后,由tcp_output将数据发送出去? 事实上tcp数据发送是由tcp协议的算法决定的。
2. 如果需要发送大数据量,调用tcp_write( , , , 1)将数据拷入发送缓冲区会比较好,可以确保数据的准确性,当然,你需要增大你的数据缓冲区,并增加连续发送数据段(这个值一般是1460,以太网帧减去头)数。
3. 可以介绍下你的应用场景吗?这么大数据量嵌入式不多见,另外tcp并不是实时协议,所以为什么要连续调用tcp_write呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

128

帖子

1

粉丝