OpenEdv-开源电子网

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

关于LWIP里面的回调函数?

[复制链接]

52

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
691
金钱
691
注册时间
2014-9-7
在线时间
121 小时
发表于 2017-8-23 16:45:38 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 12778298 于 2017-8-23 18:43 编辑

原子老师里面是程序  写了tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);
  这句代码就能调用tcp_client_connected吗?
我有几个疑问,tcp_client_connected的参数都没有赋值。
只是把tcp_client_connected地址传递一下能执行函数吗?
谁能解释一下这个回调函数是怎么运行的,C语言基础比较差。

下面一些关于的代码
typedef err_t (*tcp_connected_fn)(void *arg, struct tcp_pcb *tpcb, err_t err);


err_t  
tcp_connect(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port,
      tcp_connected_fn connected)
{  pcb->connected = connected;...}

err_t
tcp_client_connected(void *arg, struct tcp_pcb *tpcb, err_t err)
{
struct tcp_client_struct *es=NULL;
...
return err;
}



最佳答案

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

刚学lwip,试着解释下: 这句话没有调用tcp_client_connected,至少tcp_client_connected还没有运行,当运行tcp_connect时,只是把tcp_client_connected函数的地址传给了tcp_connect的最后一个参数。 以下的话有待验证: 甚至,程序运行到这里时,可能tcp_connect这条程序都没有运行,只有当三次握手成功后,才执行tcp_connect,(握手由内核执行,然后才通知程序执行tcp_connect,然后tcp_client_connected的地址(即函数 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-11-4
在线时间
10 小时
发表于 2017-8-23 16:45:39 | 显示全部楼层
刚学lwip,试着解释下:

这句话没有调用tcp_client_connected,至少tcp_client_connected还没有运行,当运行tcp_connect时,只是把tcp_client_connected函数的地址传给了tcp_connect的最后一个参数。

以下的话有待验证:
甚至,程序运行到这里时,可能tcp_connect这条程序都没有运行,只有当三次握手成功后,才执行tcp_connect,(握手由内核执行,然后才通知程序执行tcp_connect,然后tcp_client_connected的地址(即函数入口)就赋值给了tcp_connect的最后一个参数)

tcp_client_connected主要是注册了一些回调函数,它本身没有做什么实质性工作。
比如有一句是这样: tcp_recv(tpcb,tcp_client_recv);          这就是初始化LwIP的tcp_recv回调函数,这个函数(即被注册的tcp_client_recv)是在当TCP链接有数据传入时才执行。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-8-24 00:59:12 | 显示全部楼层
仿真看代码啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 22:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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