zoukankan      html  css  js  c++  java
  • lwip协议栈学习---udp

    书籍:《嵌入式网络那些事-lwip协议》

    udp协议的优点:

          1)基于IP协议,无连接的用户数据报协议,适用于传送大批量数据,

          2)实时性比较高,适用于嵌入式网络

         

    发送函数:udp_send    udp_sendto 两个函数都可以用来发送报文,后者指定发送的目的ip地址,前者需要通过与ip层交互,获取有效的ip地址,然后调用后者完成数据的发送。

    udp_sendto通过调用函数udp_sendto_if完成报文的组装和发送,在调用udp_sendto_if之前,与IP层进行交互操作,机调用ip_route为报文寻找一个网络接口结构,这个结构记录了整个系统的有效IP地址

    报文接收函数

         udp_input被调用处理报文,主要进行报文合法性检测,根据报文端口信息查找匹配的UDP控制块,并把报文数据递交给控制块中注册的用户自定义函数处理。

    udp编程接口,采用回调函数的方式,优点-编程简单,只需要绑定对应IP和端口后,编写自己的处理函数,然后通过udp_recv函数注册用户的回调函数。不过采用回调方式编程存在缺陷,用户应用程序和协议栈内核处于同一进程中,用户程序通过回调的方式执行,在用户程序执行的过程中,内核进程处于阻塞状态,如果用户程序比较大,处理时间较长,协议栈内核代码得不到执行,协议栈接收,处理新数据包效率会受到直接的影响。最严重的后果,如果发送方的数据包发送速率很快,协议栈会因为来不及处理而出现丢包的情况。

    /**************************************************************************/

       回调方式编程的基本框架:

     系统时钟更新

    SystemCoreClockUpdate();

     初始化mac层,

    Chip_ENET_Init(LPC_ETHERNET);

     使能系统滴答定时器

    SysTick_Enable(1);

     初始化lwip协议栈

    lwip_init();

     初始化本机ip

     IP4_ADDR(&gw, 192,168,1,1);//网关地址
     IP4_ADDR(&ipaddr, 192,168,1,37);//本机IP地址
     IP4_ADDR(&netmask, 255, 255, 255, 0);//子网掩码

    注册网络接口

    netif_add(&lpc_netif, &ipaddr, &netmask, &gw, NULL, lpc_enetif_init,ethernet_input);
     netif_set_default(&lpc_netif);
     netif_set_up(&lpc_netif);

    启动DHCP功能

    dhcp_start(&lpc_netif);

    申请一个UDP控制块

    upcb = udp_new();

    绑定到本地端口
     udp_bind(upcb,IP_ADDR_ANY,UDP_ECHO_PORT);

    注册用户报文处理函数
     udp_recv(upcb,udp_demo_callback,NULL);

       

  • 相关阅读:
    Java框架-Spring MVC理解004-spring MVC处理请求
    codeforces 484C Strange Sorting Codeforces Round #276 (Div. 1) C
    POJ 3415 Common Substrings 后缀数组+并查集
    HDU 5010 Get the Nut(2014 ACM/ICPC Asia Regional Xi'an Online)
    ZOJ 3817Chinese Knot(The 2014 ACM-ICPC Asia Mudanjiang Regional First Round)
    HDU 4946 Area of Mushroom(2014 Multi-University Training Contest 8)
    HDU 4951 Multiplication table(2014 Multi-University Training Contest 8)
    HDU 4938 Seeing People(2014 Multi-University Training Contest 7)
    HDU 4944 FSF’s game(2014 Multi-University Training Contest 7)
    HDU 4937 Lucky Number(2014 Multi-University Training Contest 7)
  • 原文地址:https://www.cnblogs.com/10cm/p/10677364.html
Copyright © 2011-2022 走看看