使用ZLG TCP/IP建立多个UDP连接的注意事项
来源:互联网 发布:php如何接入apple pay 编辑:程序博客网 时间:2024/04/29 10:47
最近在做嵌入式实验,需要在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文件中有两个参数UdpMaxRec和MAX_UDP_LINKS,默认为:#defineUdpMaxRec 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,#defineMAX_UDP_LINKS 4;
问题来了,如果你建立三个UDP连接,每个UDP端口项最多能接受多少条UDP消息呢?很明显还是一条。
因为如果是两条或两条以上的话,UdpMaxRec*MAX_UDP_LINKS>=6>MAX_REC_BUFF,程序就会出错。
- 使用ZLG TCP/IP建立多个UDP连接的注意事项
- TCP/IP连接的建立
- TCP/IP连接的建立
- 客户端需要建立和管理多个TCP/IP连接
- 通过UDP建立TCP连接
- TCP/IP的三次握手建立连接
- TCP/IP 建立连接的过程
- TCP/IP之十:TCP连接的建立与终止
- TCP/IP详解学习 -- TCP连接的建立与终止
- TCP/IP之十:TCP连接的建立与终止
- TCP-IP详解卷-TCP连接的建立与终结
- tcp/udp建立连接并通信的过程
- C#建立TCP/IP连接
- UDP广播IP,PORT,TCP建立链接
- TCP/IP 建立连接、断开连接的过程
- TCP/IP 建立连接、断开连接的过程
- TCP/IP 建立连接、断开连接的过程
- TCP/IP 建立连接、断开连接的过程
- Boost库之pool的使用
- 常用的图像特征有颜色特征、纹理特征、形状特征、空间关系特征
- 有一些ogre的资料
- 真实案例:由内至外判断网络丢包情况
- Eclipse插件FatJar安装与使用
- 使用ZLG TCP/IP建立多个UDP连接的注意事项
- Zend Studio或eclipsePDT等等的代码注释全关键字
- ORACLE BIEE下载地址
- Android4: HDMI system in ICS
- Java编程中“为了性能”需做的26件事
- 2012年终总结spring mvc-----AOP
- MySQL导入.sql文件及常用命令
- Linux下which、whereis、locate、find 命令的区别
- Spring(一)启动Spring