使用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文件中有两个参数UdpMaxRec和MAX_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,程序就会出错。
可惜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,默认为:#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,程序就会出错。
相关文章推荐
- TCP/IP收发缓存_MSS/MTU算法机制_状态图_连接建立和断开之上的socket函数需要注意的问题
- 在Ubuntu QML应用中使用WebSocket建立TCP/IP连接
- 嵌入式 tcp或者udp发包协议使用结构体注意事项
- SYN(synchronous)是TCP/IP建立连接时使用的握手信号
- 【Java TCP/IP Soket】— UDP套接字的基本使用
- OpenHW12手记--Qt网络服务(TCP UDP)的建立与使用
- TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结
- 摘:MD231 gprs模块建立tcp或udp连接,AT命令详细参考
- TCP/IP学习(三)TCP连接的建立与终止
- TCP/IP之十:TCP连接的建立与终止
- 使用Socket建立网络连接TCP版
- tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项
- TCP/IP 详解卷一学习笔记(四):TCP 连接建立与终止
- 看段有趣的故事,理解TCP/IP的TCP连接建立与关闭
- zookeeper使用注意事项 - 3.4.4无法连接
- 客户端需要建立和管理多个TCP/IP连接
- TCP/IP 第18章 tcp连接建立和终止
- 1、TCPIP 建立连接的过程(3-way shake)
- TCP/IP 协议简单分析(建立连接握手过程)
- VC用Ado接口连接和使用数据库及注意事项