最后更新:2022-03-01 01:33:08 手机定位技术交流文章
lwip是瑞典计算机科学院网络嵌入式系统小组(SICS)的Adam Dunkels(亚当·邓克尔) 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持 TCP 协议主要功能的基础上减少对RAM的占用。
LwIP是Light Weight(轻型)IP 协议,有无操作系统的支持都可以运行。LwIP 实现的重点是在保持TCP协议 主要功能的基础上减少对RAM的占用,它只需十几KB的RAM和 40K左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。
STM32移植LWIP协议栈示例:https://blog.csdn.net/weixin_44453694/article/details/123119624
硬件平台:STM32F103ZE开发板、DM9000有线网卡
开发环境:KEIL5
运行效果:
1.建立TCP连接函数tcp_new
struct tcp_pcb *tcp_new(void)
函数功能:建立一个新的连接标志(pcb)
形 参:无
返回值: pcb 正常建立了连接标志,返回建立的 pcb
NULL 新的 pcb 内存不可用时
2.绑定IP和端口号tcp_bind
err_t tcp_bind (struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)
函数功能:绑定本地 IP 地址和端口号
形 参: pcb 准备绑定的连接,类似于 BSD 标准中的 Sockets
Ipaddr 绑定的 IP 地址。如果为 IP_ADDR_ANY,则将连接绑定到所有的本地 IP 地址上
port 绑定的本地端口号。注意:千万不要和其它的应用程序产生冲突
返回值: ERR_OK 正确地绑定了指定的连接
ERR_USE 指定的端口号已经绑定了一个连接,产生了冲突
3.使指定连接进入监听状态tcp_listen
struct tcp_pcb *tcp_listen (struct tcp_pcb *pcb)
函数功能:使指定的连接开始进入监听状态
形 参: pcb 指定将要进入监听状态的连接
返回值: pcb 返回一个新的连接标志 pcb,它作为一个参数传递给将要被分派的函数。这样做的原因是
处于监听状态的连接一般只需要较小的内存,于是函数 tcp_listen()就会收回原始连接的内存,
而重新分配一个较小内存块供处于监听状态的连接使用。
NULL 监听状态的连接的内存块不可用时,返回 NULL。如果这样的话,作为参数传递给函
数tcp_listen()的 pcb 所占用的内存将不能够被分配。
4.等待客户端连接tcp_accept
void tcp_accept(struct tcp_pcbpcb,err_t (accept)(void *arg,struct tcp_pcb *newpcb,err_t err))
函数功能:指定处于监听状态的连接接通后将要调用的回调函数
形 参: pcb 指定一个处于监听状态的连接
accept 指定连接接通后将要调用的回调函数
返回值:无
本文由 在线网速测试 整理编辑,转载请注明出处。