您的位置:首页 > 理论基础 > 计算机网络

使用ZLG TCP/IP建立多个UDP连接的注意事项

2013-01-04 16:51 579 查看
最近在做嵌入式实验,需要在LPC1700开发板上跑一个多任务多UDP连接的系统。

可惜1700可怜的RAM只有32K,想使用linux却是有心无力,所以只能用μC/OS-II建立多任务。

建立TCP/IP连接就要用到嵌入式的TCP/IP协议栈,这方面的资源很多LWIP、OPENTCP等,但是对于一个菜鸟来说最简便的莫过于使用周立功的TCP/IP协议栈。

虽然ZLG TCP/IP协议栈不足之处很多,但是代码简单,结构清晰,很适合初学者学习。

作为一个菜鸟,在使用ZLG TCP/IP的时候遇到了些问题,经过一番努力最终将其解决,现在把这些问题写出来供大家交流学习,更希望新手看了能少走弯路。

问题一:建立多个UDP连接时需要修改的参数

udp.h文件中有两个参数UdpMaxRecMAX_UDP_LINKS,默认为:#define
UdpMaxRec 2,#define MAX_UDP_LINKS 2

MAX_UDP_LINKS代表你最多能建立多少个UDP连接,UdpMaxRec代表每个UDP端口项最多能接受多少条UDP消息,当你需要建立多个UDP连接绑定不同的端口,

就要按需要修改这两个参数。

问题二:LPC1700的硬件缓冲区大小与UDP连接数的关系

hardware.h文件中的参数MAX_REC_BUFF,默认为:#define MAX_REC_BUFF 4

这个值代表着整个以太网模块接收和发送缓冲区的大小,它与以太网模块相关寄存器地址相关联,因此修改它需要相关寄存器的起始地址,改起来很麻烦。

问题一提到的两个参数与MAX_REC_BUFF是相关联的,在只有UDP连接的情况下,UdpMaxRec=MAX_REC_BUFF/MAX_UDP_LINKS

也就是:如果你建立四个UDP连接,每个UDP端口项最多能接受一条UDP消息 #define UdpMaxRec 1,#define
MAX_UDP_LINKS 4;

问题来了,如果你建立三个UDP连接,每个UDP端口项最多能接受多少条UDP消息呢?很明显还是一条。

因为如果是两条或两条以上的话,UdpMaxRec*MAX_UDP_LINKS>=6>MAX_REC_BUFF,程序就会出错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: