OpenEdv-开源电子网
标题:
原子lwip例程,发送大数量数据出现问题
[打印本页]
作者:
@令狐冲
时间:
2015-8-28 12:01
标题:
原子lwip例程,发送大数量数据出现问题
利用原子哥的lwip例程,我用的stm32f407作为服务端,当有客户端连接时,就发送大数量的AD采样数据给客户端,发现老是丢失数据,后来我发现原来原子哥的lwip例程的发送数据是放在tcp_server_poll()轮询函数里,也就是说,每次要等待500ms查询后才发送,所以我想用tcp_server_sent(void *arg, struct tcp_pcb *tpcb, u16_t len)这个函数直接发送,可是又不知道这个函数的里
void *arg, struct tcp_pcb *tpcb这个两个形参到底该填什么?求助!
作者:
zuozhongkai
时间:
2015-8-28 12:31
我们提供的例程适合小数据量发送,大数据量发送的话就需要你在我们提供的例程上修改,比如你把tcp_server_poll中的发送函数提取出来放到其他地方发送。
作者:
@令狐冲
时间:
2015-8-28 12:36
回复【2楼】zuozhongkai:
---------------------------------
是想把tcp_server_poll里面的函数提取出来发送,那就需要tcp_server_sent(void *arg, struct tcp_pcb *tpcb, u16_t len)这个函数,这个函数形参void *arg, struct tcp_pcb *tpcb和tcp_server_poll是一样的,而tcp_server_poll()是由内核自己调用,形参不必自己写。可tcp_server_sent里面的形参需要自己写,不知道到底该填写什么?
作者:
taoking_opendev
时间:
2016-8-13 23:14
maaaark
作者:
wcyingdream
时间:
2016-8-15 14:39
mark,楼主好好解决这个问题,到时候分享下
作者:
ysq7120
时间:
2016-8-15 17:33
搞错了吧。tcp_poll应该是发送失败,定时器调用触发吧。而正常一个大数据包,没有发送完,后续部分tcp_sent就会马上触发回调函数继续发送。你肯定是哪里没写好。我的服务器一次发多种数据大的数据包15k,基本都没见过poll触发,收发都很好。
作者:
程序写好了吗
时间:
2016-8-25 11:44
你试试将硬件帧校验关了,我也遇到这个问题,不过用软校验就行了
欢迎光临 OpenEdv-开源电子网 (https://www.openedv.com/)
Powered by Discuz! X3.4