UDP详解

UDP详解用户使用UDP进行编程,以及内核对UDP报文的处理,本质上都是对UDP控制块的操作。//用于控制块的flags字段,标识控制块的状态连接#defineUDP_FLAGS_NOCHKSUM0x01U//不进行校验和的计算#defineUDP_FLAGS_UDPLITE0x02U#de

大家好,欢迎来到IT知识分享网。UDP详解"

用户使用UDP进行编程,以及内核对UDP报文的处理,本质上都是对UDP控制块的操作。

//用于控制块的flags字段,标识控制块的状态连接
#define UDP_FLAGS_NOCHKSUM       0x01U  //不进行校验和的计算
#define UDP_FLAGS_UDPLITE        0x02U 
#define UDP_FLAGS_CONNECTED      0x04U  //控制块已和远端建立连接
#define UDP_FLAGS_MULTICAST_LOOP 0x08U  

//定义回调函数类型
typedef void (*udp_recv_fn)(void *arg, struct udp_pcb *pcb, struct pbuf *p,
    ip_addr_t *addr, u16_t port);
//定义控制块结构体
struct udp_pcb {
  IP_PCB;                             //宏IP_PCB中的各个字段
  struct udp_pcb *next;               //用于将控制块组织成链表的指针
  u8_t flags;                         //控制块状态字段
  u16_t local_port, remote_port;      //保存本地端口号和远端端口号,使用主机字节序
#if LWIP_IGMP
  /** outgoing network interface for multicast packets */
  ip_addr_t multicast_ip;
#endif /* LWIP_IGMP */
#if LWIP_UDPLITE
  /** used for UDP_LITE only */
  u16_t chksum_len_rx, chksum_len_tx;
#endif /* LWIP_UDPLITE */
  udp_recv_fn recv;                    //处理数据时的回调函数
  void *recv_arg;                      //当调用回调函数时,将传递给函数的用户自定义的数据信息
};

IP_PCB宏

#define IP_PCB \
  ip_addr_t local_ip; \
  ip_addr_t remote_ip; \
  u8_t so_options;      \      //socket连接
  u8_t tos;              \     //服务类型
  u8_t ttl               \     //生存时间
  IP_PCB_ADDRHINT
struct ip_pcb {
  IP_PCB;
};

被使用最多的是前两个,本地IP,远程IP。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32420.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信