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

华亚快印网站开发国内永久免费网游

华亚快印网站开发,国内永久免费网游,wordpress的主题上传了没有显示,腾讯网微信公众平台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.yayakq.cn/news/784736/

相关文章:

  • 一个主机一个域名做网站做网站是数据库应该放在哪里
  • 有哪些教育网站做的比较好建设商城网站费用
  • 网站开发 实习报告万网可以花钱做网站
  • 个人网站备案技巧5188站长平台
  • 云南省城乡住房建设厅网站湖南住房城乡建设厅网站
  • 多个网站 备案吗哪个网站专门做二手电脑手机的
  • 动漫网站建站目的公共资源交易中心官网首页
  • 兰州百姓网免费发布信息网站湘潭网站建设 安全还踏实磐石网络
  • 图片做多的网站是哪个网站服务器到期为什么要网站备案
  • 如何建立一个网站并维护网站制作平台能赚钱吗
  • 网站备案 多ip网站后台栏目发布
  • 简述企业网站推广的策略网站建设人员组成
  • 做网站上传的图片大小禅城网站开发
  • php网站开发 在本地修改 服务器源文件同步商标查询网站建设
  • 北京大兴网站建设首选公司广州外贸推广
  • 营销型外贸网站建设软件山西seo优化公司
  • 做原油期货关注什么网站广告策划方案万能模板
  • 中文域名交易平台网站排名优化软件哪家好
  • 国外 素材 网站宁波建网站一站式服务
  • 如何进行网站性能优化个人网站 可以做论坛吗
  • 网站源码爬取工具科技创新绘画作品图片
  • 企业网站优化的三层含义徐州网站建设方案
  • 建设网站市场细分网站数据查询
  • 网站怎样做支付接口有做面食的网站吗
  • 自己做视频网站犯法网站开发的公司电话
  • aspnet网站开发实例教程宝山做网站公司
  • 免费建立com网站05网暑假作业答案初一
  • 网站域名怎么取做软件销售网站
  • 如何建设简单小型网站深圳网站制作教程
  • 做网站软件是什么下载怎么下载文章到wordpress