首页 > 其他分享 >zynq Lwip学习笔记-accept_callback函数

zynq Lwip学习笔记-accept_callback函数

时间:2024-03-23 14:04:28浏览次数:20  
标签:Lwip 函数 err tcp newpcb callback accept 连接

文章目录


前言`

最近在学习zynq中的lwip协议族,找不到很好的记笔记的地方,所以就用csdn记录一下自己的学习过程。现在对lwip不熟悉,只是把官方的lwip echo server例程跑了一下,能跑通就一点点的照着学了,笔记都是根据自己的理解写的,而且部分内容可能也只针对lwip echo server例程有效,笔记可以供有缘人参考,但不敢保证全对,有不对的地方也期待有高人指点一二。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40356705/article/details/136792309`

一、概述

  • 原型
err_t accept_callback(void *arg, struct tcp_pcb *newpcb, err_t err)
  • 参数
    void *arg: 指向用户数据的指针,但在这个函数中并未使用。
    struct tcp_pcb *newpcb: 指向新建立的TCP连接的指针。
    err_t err: 表示接受连接时的错误状态。
  • 功能
    是在一个新的TCP连接被接受时,为这个连接设置接收回调函数,并给这个连接一个唯一的ID。这有助于在回调函数中区分不同的连接。

二、函数体

err_t accept_callback(void *arg, struct tcp_pcb *newpcb, err_t err)
{

static int connection = 1;

//定义了一个静态整型变量connection并初始化为1。这个变量用于追踪已经接受的连接数。由于是静态的,它只会在accept_callback函数内部存在,但其值会在函数调用之间保持。

tcp_recv(newpcb, recv_callback);

//为新建立的TCP连接newpcb设置接收回调函数recv_callback。当该连接上有数据到达时,recv_callback会被调用。

tcp_arg(newpcb, (void*)(UINTPTR)connection);

//为新建立的TCP连接newpcb设置回调函数的参数。这里,它使用了connection的整数值并将其转换为void*类型。这样,当回调函数(如recv_callback)被调用时,它可以获取这个连接ID作为参数。

connection++;

//增加connection的值,以便为下一个接受的连接提供一个新的ID。

return ERR_OK;

//函数返回ERR_OK,表示没有错误,连接接受成功。
}

三、调用关系

该函数被tcp_accept函数调用;该函数主要调用了tcp_recv函数与tcp_arg函数。

标签:Lwip,函数,err,tcp,newpcb,callback,accept,连接
From: https://blog.csdn.net/weixin_40356705/article/details/136824649

相关文章

  • 使用useCallback包裹后,参数类型就变成了any
    在使用React的useCallbackHook时,如果直接包裹一个函数而没有提供类型参数,TypeScript会默认认为回调函数的参数类型为any。这是因为useCallbackHook接受两个参数,第一个是回调函数,第二个是一个依赖数组,而TypeScript在没有明确指定类型的情况下无法推断回调函数的参数类型。要解决......
  • STM32 LwIP学习过程问题总结(一):LwIP ping不通,抓包发现ICMP校验和为0x0000
    一、问题今天在将之前的STM32LwIP1.4.1版本程序移植到2.1.2版本上时,发现ping不同,但是开发板有ICMP回复包,黄颜色警告checksum为0x0000。说明LwIP移植应该是没问题,数据处理这一块出错了。 在网上找了下相关的错误,ST论坛有个问题和我这个一样。HardwareIPv4checksumonanST......
  • Blazor笔记-Component EventCallback
    更新记录注意:非教程。纯笔记,日常查询用的。需要教程的小伙伴找几本书看看即可哈哈,有Vue基础的话非常快,概念都是通的。非工作需要不建议深入学习Blazor,深入Vue吧,用的多,哈哈。完整目录地址:https://www.cnblogs.com/cqpanda/p/17596348.html点击查看2024年3月7日发布。2023......
  • LWIP RAW接口TCP与UDP部分函数解析
    RAWTCP接口tcp_input()函数voidtcp_input(structpbuf*p,structnetif*inp) --->staticerr_ttcp_process(structtcp_pcb*pcb) --->staticvoidtcp_receive(structtcp_pcb*pcb) --->>TCP_EVENT_RECV(pcb,recv_data,ERR_OK,err);//调用用户注册......
  • react-native中memo、useMemo、useCallback 你真的用明白了吗
    memo的作用在React的渲染流程中,一般来说,父组件的某个状态发生改变,那么父组件会重新渲染,父组件所使用的所有子组件,都会强制渲染。而在某些场景中,子组件并没有使用父组件传入的没有发生更改的状态时,子组件重新渲染是没有必要的。因此有了React.memomemo的使用memo是个高阶......
  • 钩子hook,回调函数callback
    摘自和参考如下资料:钩子(回调函数)与PyTorch-知乎(zhihu.com) 把钩子函数传递给触发函数,就可以在触发函数内调用钩子函数了。其实就是把函数指针或者函数名传给另一个函数。只不过一般不单独这么用,配合类一起用可能就稍微麻烦了点。classOneday():def__init__(se......
  • DBeaver连接SqlServer报“The server selected protocol version TLS10 is not accept
    1、......
  • ERROR:Only one ConfirmCallback is supported by each RabbitTemplate] with root cau
     错误:OnlyoneConfirmCallbackissupportedbyeachRabbitTemplate]withrootcause 原因:因为Spring的Bean默认都是单例;而RabbitTemplate对象同样支持一个回调。 解决:使用@Scope("prototype")可通知Spring将被注解的Bean变为多例。代码: //改Ra......
  • Linux内核accept系统调用源码分析
    内核版本:Linux3.10内核源码地址:https://elixir.bootlin.com/linux/v3.10/source(包含各个版本内核源码,且网页可全局搜索函数)一、应用层-accept()函数/***sockfd:监听socket的文件描述符*addr:存放地址信息的结构体的首地址(用来保存客户端的IP、Port)*addrlen:存放地......
  • WidgetsBinding.instance.addPostFrameCallback widget首次渲染完成执行其他操作
    使用场景Flutter中的界面组件(控件)只要一帧就能绘制渲染在屏幕上,当然,这一帧Flutter做了很多事,包括Build、Layout和Painting阶段。而 addPostFrameCallback 就是在每一帧绘制完成后再回调执行一些自己的方法。这个机制的使用场景非常多。比如组件渲染完后做一些操作,像开......