总算一点一点看完了UIP协议,期间各大网站,各位coder的代码翻了好几个,在此感谢。
首先,应清楚UIP协议在代码中扮演的是什么角色,我觉得流水线一样,将应用层的数据,通过流水线不断包装。
TCP---IP---MAC--->发送。
uip_buf就是实际的原料了。在UIP协议就使用了一个缓冲区。其实是char类型的数组,然后各种strut将它转换成自己的结构,如:
- #define BUF ((struct uip_eth_hdr *)&uip_buf[0])
-
#define ICMPBUF ((struct icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
-
#define UDPBUF ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])
所有的数据都保存在uip_buf数组中。通过uip_process函数来封装。
uip_len是uip_buf接收到的数据的长度。
具体的发送到网络上的函数需要根据自己的平台具体实现,整体的循环不需要改动多少。
阅读(693) | 评论(0) | 转发(0) |