当前位置: 首页 > news >正文

门户网站编辑联系方式爱站seo查询软件

门户网站编辑联系方式,爱站seo查询软件,京东的网站建设规划,网页游戏魔域变态版1. NETCONN接口简介 NETCONN API 使用了操作系统的 IPC 机制, 对网络连接进行了抽象,使用同一的接口完成UDP和TCP连接。 NETCONN API接口是在RAW接口基础上延申出来的一套API接口 首先会调用netconn_new创建一个pcb控制块,其实际是一个宏定…

1. NETCONN接口简介

NETCONN API 使用了操作系统的 IPC 机制, 对网络连接进行了抽象,使用同一的接口完成UDP和TCP连接。
NETCONN调用流程
NETCONN API接口是在RAW接口基础上延申出来的一套API接口

NETCONN调用流程
首先会调用netconn_new创建一个pcb控制块,其实际是一个宏定义,调用了netconn_new_with_proto_and_callback函数;其就是先定义了一个netconn的结构体conn,然后通过netconn_alloc申请内存,并通过netconn_apimsg构建一个API消息;

netconn_apimsg,在里面就是调用tcpip_send_msg_wait_sem;这个函数中,显示构建了一系列消息的初始化,然后调用sys_mbox_post发送邮箱;

当然以上所述,是需要通过宏定义修改才能实现的,lwIP内核默认是直接调用RAW,而不需要API消息;如果是默认方式,那么就会直接调用,也就是直接通过lwip_netconn_do_newconn函数执行;该函数中构建了一个api_msg结构体的指针msg,然后只要msg->conn->pcb.tcp为空,就调用peb_new创建内存;这其中会根据宏定义,判断是UDP还是TCP

UDP就会调用udp_new_ip_type,里面调用udp_new进行创建pcb控制块;创建完成后,会调用udp_recv构建udp的recv回调函数,这里的回到函数就不需要像RAW接口一样自己编写了;lwIP已经实现了recv_udp,里面创建流程跟之前讲的很像,调用memp_malloc创建内存给netbuf结构体buf,然后初始化buf的参数,比如p和ptr指针,还有IP地址和端口号;最重要的就是调用sys_mbox_trypost发送邮箱给tcp线程,然后会把当前pbuf的指针发送出去

2. NETCONN实现原理

NETCONN控制块

netconn控制块
这里比较好用的是union这个联合体,在里面定义了四个控制块分别是IP、TCP、UDP以及RAW控制块,这里是通过union选定了之后,其他的结构体参数就会自动连接到union选定的结构体之中,非常方便!

netconn中定义了netconn_type连接类型;netconn_state表示当前的连接状态;然后union pcb定义了四种控制块选其一;err_t last_err表示最新错误;sys_sem_t op_completed表示API同步的信号量以及sys_mbox_t recvmbox表示接收数据的邮箱,等;

NETCONN收发的数据管理

收发的数据结构体
定义了netbuf的结构体;包含pbuf类型的p和ptiji发送方IP地址ip_addr_t addr;以及发送方端口号u16_t port;

其中,p和ptr都指向pbuf链表,不同的是,p一直只想pbuf链表的第一个pbuf结构,而ptr可能指向链表的其他位置netbuf_next()和netbuf_first()操作ptr字段

addr和port来记录数据发送方的IP地址和端口号,netbuf_fromaddr和netbuf_fromport这两个宏定义来返回addr和port字段

之前就有过解析,在通过NETCONN创建udp的控制块中,会有recv_udp函数来进行udp_recv的回到函数的编写,是lwIP内核实现的;recv_udp中,会构造netbuf结构体的指针buf,memp_malloc之后,buf的p和ptr指针都赋值p,addr和port也是给定相应的Ip地址和端口号然后通过sys_mbox_trypost把buf发送出去

接收数据,则是调用netconn_recv完成;而该函数最后,如果是调用了UDP协议,会return netconn_recv_data函数;这个函数中,会调用sys_arch_mbox_fetch接收消息,接受的就是buf这个pbuf数据;接受到了之后,会把他传入recvbuf之中;然后遍历pbuf链表并调用memcpy进行拷贝,获取udp数据到数据缓冲区g_lwip_demo_recvbuf之中。

针对netconn结构体中,需要注意宏定义LWIP_SO_SNDTIMEO,这个宏定义之0,则recv和send函数都是阻塞状态;也就是说接收和发送在同一任务重,由超时事件来控制,一般都不这么使用,会影响效率,所以这个宏置1

3. NETCONN实现原理

NETCONN示意图
netconn_alloc创建了netconn结构体和邮箱;调用了udp_new和udp_recv完成了udp控制块以及rcv的实现;netconn_bind把IP地址和端口号传入netconn,然后调用netconn_connect进行连接;数据会先进入udp控制块,进入pbuf后借由recv_udp给到发送邮箱recvnbox,发送出去后在通过接收邮箱recvmbox接收到

邮箱传输的是pbuf的地址,pbuf由netbuf管理!

NETCONN与RAW区别

NETCONN与RAW接口比对
NETCONN就类似于STM32的标准库开发,而RAW接口类似于STM32寄存器开发

3. NETCONN相关函数

相关函数

总结

NETCONN就是对RAW接口进行初步封装,能够省去自己实现五个回调函数的步骤,更好的进行抽象,帮助我们开发以太网的连接。

http://www.ds6.com.cn/news/409.html

相关文章:

  • 网站ip pv值安卓优化大师官方版
  • 网站如何备案流程seo推广公司排名
  • 做简历那些网站比较好杭州网站优化效果
  • 三屏合一网站建设营销培训班
  • 软件工程师招聘信息网站谷歌aso优化
  • 网站软文推广好处宁夏百度推广代理商
  • 奎文区建设局网站市场营销策划公司排名
  • 建立商务网站步骤最新国际新闻10条
  • php旅游网站模板下载列举常见的网络营销工具
  • wordpress 逻辑表单seo网站推广助理
  • 郑州网站建设zzwzjs网站建设企业建站
  • 大型网站制作平台怎么制作一个网站5个网页
  • 苏州网站建设优化公司免费找精准客户软件
  • 俄文网站建设 俄文网站设计百度查重入口免费版
  • 网站怎么更新网页内容免费b站软件下载
  • 注册域名 不建网站互联网营销培训班
  • 百度站长提交网址如何制作一个属于自己的网站
  • linux服务器下如何新建网站营销网络营销
  • 科技公司网站设计方案seo月薪
  • 我回了橙子建站的验证码品牌如何做推广
  • 做股权众筹的网站湘潭网站设计
  • 网站建设多久seo标题优化是什么意思
  • 武汉汉口做网站费用千锋培训机构官网
  • aardio 网站开发安康地seo
  • 河西做网站深圳抖音seo
  • 太原软件开发公司有哪些seo竞争对手分析
  • 叫人做国外公司网站让老外做好还是国内人做好百度网盘app官网
  • 网站建设合同 费用抖音关键词用户搜索排名靠前
  • 介绍化工项目建设和招聘的网站seo手机关键词网址
  • 电子税务门户网站建设研究搜索引擎优化教材答案