OpenEdv-开源电子网

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

lwip tcp_client 模式下怎样主动发送数据?

[复制链接]

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2013-3-8
在线时间
15 小时
发表于 2015-12-16 17:51:43 | 显示全部楼层 |阅读模式
5金钱
lwip tcp_client发送数据必须放在tcp_client_poll()这个回调函数里吗?怎么才能利用tcp_client_sent()这个函数来主动发送数据?求指点。

最佳答案

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

把tcp_client_poll()中的代码组织一下重新做个函数直接调用就可以了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7381

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14979
金钱
14979
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-12-16 17:51:44 | 显示全部楼层
把tcp_client_poll()中的代码组织一下重新做个函数直接调用就可以了
开往春天的手扶拖拉机
回复

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2013-3-8
在线时间
15 小时
 楼主| 发表于 2015-12-17 14:35:53 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
      之前一直困惑 怎么得到err_t tcp_client_poll(void *arg, struct tcp_pcb *tpcb) 函数中 *arg 这个参数,后来直接定义了一个struct tcp_client_struct *es_ex 全局结构体,当在tcp_client_connected(void *arg, struct tcp_pcb *tpcb, err_t err)函数中第一次分配 es这个结构体的同时,将局部的es 结构体赋值给全局变量es_ex结构体,这样就可以给自己编写的发送函数传递参数了。
     感谢您的回复。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-8-8
在线时间
7 小时
发表于 2016-5-10 16:10:14 | 显示全部楼层
也遇到了同样的问题,水平太低,还没跳出来,求大神的原代码
回复

使用道具 举报

3

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
237
金钱
237
注册时间
2015-12-3
在线时间
33 小时
发表于 2016-5-15 14:24:54 | 显示全部楼层

不知道怎么提高网口的速度,求大神指教
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-3-9
在线时间
11 小时
发表于 2016-7-1 09:47:14 | 显示全部楼层
心痒难搔 发表于 2015-12-17 14:35
回复【2楼】zuozhongkai:
---------------------------------
      之前一 ...

大哥,对你万分感谢,用了你说的方法真就可以接到数据了,虽然还不知道为什么可以。。
回复

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2016-5-23
在线时间
7 小时
发表于 2016-7-25 14:50:26 | 显示全部楼层
赞,参考了,果然有改善
回复

使用道具 举报

16

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2441
金钱
2441
注册时间
2014-11-5
在线时间
348 小时
发表于 2016-7-26 13:28:31 | 显示全部楼层
tcp建立成功后直接用tcp_wrtie()就可以发送数据,数据量大了不知道用此函数有没有问题
回复

使用道具 举报

5

主题

62

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
425
金钱
425
注册时间
2016-3-9
在线时间
74 小时
发表于 2016-8-13 22:38:56 | 显示全部楼层
mark!!!
回复

使用道具 举报

3

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
237
金钱
237
注册时间
2015-12-3
在线时间
33 小时
发表于 2016-10-23 20:24:28 | 显示全部楼层
心痒难搔 发表于 2015-12-17 14:35
回复【2楼】zuozhongkai:
---------------------------------
      之前一 ...

怎么组织?还是不太懂
回复

使用道具 举报

12

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-10-27
在线时间
34 小时
发表于 2018-1-15 17:00:31 | 显示全部楼层
zuozhongkai 发表于 2015-12-16 17:51
把tcp_client_poll()中的代码组织一下重新做个函数直接调用就可以了

连续发数据的时候怎么判断发送数据完成啊
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2016-2-26
在线时间
8 小时
发表于 2018-4-27 14:16:05 | 显示全部楼层
心痒难搔 发表于 2015-12-17 14:35
回复【2楼】zuozhongkai:
---------------------------------
      之前一 ...

大神,能否说的再详细点?这个对我们小白来说  还是很深奥的
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2019-2-20
在线时间
22 小时
发表于 2019-6-13 10:12:35 | 显示全部楼层
心痒难搔 发表于 2015-12-17 14:35
回复【2楼】zuozhongkai:
---------------------------------
      之前一 ...

你这里编写的发送函数是怎么写的?
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2018-4-6
在线时间
19 小时
发表于 2020-8-30 11:21:21 | 显示全部楼层
void Tcp_Penetrate_SenData(u8 *buf,u8 num)
{
        struct tcp_pcb *tpcb;
        tcp_write(tpcb,buf,num,TCP_WRITE_FLAG_COPY);         // payload为TCP数据块的起始位置               
        tcp_output(tpcb);        //发送数据出去
}
这个函数为什么数据送不出去呢?TCP服务端主动往客户端发送数据
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2021-1-31
在线时间
7 小时
发表于 2021-2-8 16:54:48 | 显示全部楼层
补充三楼,tcp_connect调用回调函数tcp_client_connected后,回调函数开始执行,但tcp_connect函数自己执行完后会继续向下执行,所以全局变量的赋值并不是在tcp_connect执行完后生效,而是在tcp_client_connected执行后,稍微晚于tcp_connect,所以客户端发送数据要等全局变量赋值完成后才能进行,二者好像是异步的关系,初学小白不敢确定,只是刚好遇到这个问题试成功了
回复

使用道具 举报

3

主题

19

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2023-5-31
在线时间
6 小时
发表于 2023-5-31 18:18:36 | 显示全部楼层
hello_galaxy 发表于 2016-7-26 13:28
tcp建立成功后直接用tcp_wrtie()就可以发送数据,数据量大了不知道用此函数有没有问题

数据量大会出现OUT OF MEMORY ERROR
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-5-29 04:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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