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

青海高端网站建设公司wordpress中的钩子

青海高端网站建设公司,wordpress中的钩子,好的用户体验网站,北京建设安全协会网站前面我们已经完成了LwIP协议栈基于逻辑的基本移植#xff0c;在这一节我们将以RAW API来实现UDP服务器。 1、UDP协议简述 UDP协议全称是用户数据报协议#xff0c;在网络中它与TCP协议一样用于处理数据包#xff0c;是一种无连接的协议。在OSI模型中#xff0c;处于传输层…前面我们已经完成了LwIP协议栈基于逻辑的基本移植在这一节我们将以RAW API来实现UDP服务器。 1、UDP协议简述 UDP协议全称是用户数据报协议在网络中它与TCP协议一样用于处理数据包是一种无连接的协议。在OSI模型中处于传输层是IP协议的上层协议。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点也就是说当报文发送之后是无法得知其是否安全完整到达的。 UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息剩余字节则用来包含具体的传输数据。 UDP报头由4个域组成其中每个域各占用2个字节具体如下源端口号、目标端口号、数据报长度、校验值。其数据结构如下 UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方可以是客户端或服务器端将UDP数据包通过源端口发送出去而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号所以端口号的有效范围是从0到65535。一般来说大于49151的端口号都代表动态端口。 数据报的长度是指包括报头和数据部分在内的总字节数。因为报头的长度是固定的所以该域主要被用来计算可变长度的数据部分。数据报的最大长度根据操作环境的不同而各异。从理论上说包含报头在内的数据报的最大长度为65535字节。不过一些实际应用往往会限制数据报的大小有时会降低到8192字节。 UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出在传递到接收方之后还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏发送和接收方的校验计算值将不会相符由此UDP协议可以检测是否出错。 2、UDP服务器设计 前面我们简要的介绍了UDP协议及其数据报接下来我们将考虑怎么实现基于UDP协议的服务器。 首先我们来看一看与UDP相关的API函数并对它们作一个初步的介绍应为我们需要使用它们来实现我们的应用。函数及说明如下 了解了这些函数我们现在考虑其实现过程。对于UDP服务器端来说实现相对简洁。其实现步骤如下 首先生成一个新的UDP控制块。 接着绑定UDP控制块到任意IP地址及制定端口。 最后为UDP控制块注册数据处理回调函数这里需要说明一下这就是RAW AIP的回调函数。根据你要实现的功能不同复杂程度完全不一样。我们由于要实现一个回环服务器所以相对简单。只需要将收到的信息以我们想要的方式发送回客户端就可以了。 为了很好的实现UDP服务器还有一个问题需要设计好就是我们前面我们曾提到的端口。我们都知道TCP/IP协议族包括有很多的协议那通讯究竟是针对哪一个协议发生的呢所谓两台机器间的通讯实际上是主机上的应用进程间的通讯端口号就是为了最终实现主机上应用进程的通讯。我们常见且会在后续使用到的协议端口如下 为了使用方便我们将这些端口定义为宏并存储到一个专门的文件中。在这里我们本次实现UDP服务器也需要制定一个端口其实支持UDP的端口都没问题但为了方便描述我们制定其为回环显示端口。 3、UDP服务器实现 我们了解了其实现的基本过程其实并不复杂。事实上回调函数的内容才是我们真正需要考虑的东西。我们将其实现分为两个部分一是UDP服务器的初始化部分二是UDP服务器功能部分也就是回调函数所执行的内容。 首先实现UDP服务器的初始化部分。初始化部分定义一个新的UDP控制块并将其绑定到任意IP地址及指定端口。然后注册数据处理回调函数。 /* UDP初始化配置 */ void UDP_Server_Initialization(void) {static char * recv_argWe recieved a UDP data\n;struct udp_pcb *upcb;/* 生成一个新的UDP控制块 */upcb udp_new();/* 绑定upcb块到任意IP地址及指定端口*/udp_bind(upcb, IP_ADDR_ANY, UDP_ECHO_SERVER_PORT);/* 为upcb指定数据处理回调函数 */udp_recv(upcb,UDPServerCallback,(void *)recv_arg); } 关于为什么要将本地IP绑定到任意IP呢这是因为UDP服务器收到数据包后LwIP会先判断其数据包的目的IP和端口是否和本地注册的PCB控制块绑定的本地的IP和本地端口号是否匹配。所以我们绑定PCB控制块本地IP设为IP_ADDR_ANY时只要收到的数据包的目的IP非广播地址端口号匹配那么均认为数据包的目的IP和端口是与本地注册的PCB控制块绑定的本地IP和端口号相匹配的。省去了自己构造本地IP的过程。 初始化完毕后注册了数据处理回调函数。接下来需要实现回调函数的内容。回调函数主要实现对数据的处理这取决于自己的需求。在这里我们在接收到UDP客户端数据包后不对其作什么处理因为这一数据本来无意义我们对任何的客户端请求给予固定的回复。 /* 定义UDP服务器数据处理回调函数 */ static void UDPServerCallback(void *arg,struct udp_pcb *upcb,struct pbuf *revBuf,const ip_addr_t *addr,u16_t port) {struct pbuf *sendBuf NULL;const char* reply This is reply!\n;pbuf_free(revBuf);sendBuf pbuf_alloc(PBUF_TRANSPORT, strlen(reply)1, PBUF_RAM);if(!sendBuf){return;}memset(sendBuf-payload,0,sendBuf-len);memcpy(sendBuf-payload, reply, strlen(reply));udp_sendto(upcb, sendBuf, addr, port);pbuf_free(sendBuf); } 对于这个回调函数它实际是赋给一个函数指针所以虽然它的内容和名称可以随意但其格式是有要求的void (*udp_recv_fn)(void *arg, struct udp_pcb *pcb, struct pbuf *p,const ip_addr_t *addr, u16_t port) 4、结论 至此我们完成了简单的UDP服务器在这里我们使用客户端来测试一下这个UDP服务器测试结果如下 这里只测试了一个客户端两届服务器的情况其实连接多个客户端的情况也是没问题的。如下 佷显然如果我们希望实现更复杂的UDP服务器我们只需要将我们想实现的功能做到回调函数中就可以了。 欢迎关注
http://www.pierceye.com/news/367430/

相关文章:

  • 域名的正确书写格式自动seo优化
  • 怎样在网站做友情链接网页什么设计
  • 做seo网站营销推广南宁建设职业技术学院招聘信息网站
  • 网站建设全网推广小程序手机网站怎么优化
  • wordpress 网站logowin系统没有wordpress
  • 玉山电商网站建设东莞市建设规划局网站
  • 网站建设运营公司企业特色c2c的代表性的电商平台
  • 上海网站建设,分类广告软件公司简介
  • 网站虚拟主机被国家禁止访问的网站怎么打开
  • wordpress手机加载不出来优化官网咨询
  • 平台网站建设预算表如何来做网站
  • 温州网站制作企业东莞网络推广公司电话
  • 网站建设的条件重庆那些网站
  • 伊犁网站制作大连甘井子区房价
  • 循环视频做网站背景win2012r2 建设网站
  • 建设网站制作汉狮团队义乌北苑编程网站开发公司
  • 网站开发公司会计处理滨州市住房和城乡建设局网站
  • 企业网站站内优化长尾关键词挖掘站长工具
  • 山东平台网站建设企业怎么做自己的品牌网站
  • 长沙seo网站排名杭州网站建设q479185700棒
  • 泰州网站建设搭建工程造价网
  • 网站流程优化c2c模式举例子
  • 帝国网站调用图片集网店平台有哪些
  • 做flash音乐网站的开题报告删除wordpress左上角
  • php网站开发学什么衡水大型网站建设
  • 广州网站开发软件平台wordpress 问号
  • 西安市建设干部学校网站厦门网站优化服务
  • 深圳市南山区住房和建设局官方网站如何把html网站改为asp网站
  • 网站建设有什么技术做dw网站图片怎么下载地址
  • 初中生如何做网站潍坊网站开发