使用lwip_sendto时mbox无效

时间:2013-07-22 19:06:21

标签: c freertos lwip

我正在尝试使用freertos中的lwip堆栈进行基于UDP的多个套接字通信。我的第一个问题是,套接字创建失败,因为lwip_socket调用了netconn_new,其中包含对TCPIP_APIMSG(&msg)的调用,该调用返回错误。我发现TCPIP_APIMSG(&msg)中的错误是由于sys_mbox_valid(&mbox)返回false而产生的。

我认识到创建了比lwip配置变量memp_n_udp_pcb允许的UDP套接字更多的UDP套接字后,我可以解决这个问题。我刚刚增加memp_n_udp_pcb

现在我遇到了lwip_sendto在发送大约300个数据包后停止工作的问题。同样,TCPIP_APIMSG(&msg)中的无效mbox似乎也是原因。 lwip_sendto调用netconn_send,调用TCPIP_APIMSG(&msg),由于mbox无效而返回错误。

我只是尝试使用带有freertos的lwip堆栈,但我没有使用lwip堆栈的实现细节的经验。我不知道无效的mbox是什么意思以及如何解决问题。

我希望有人可以向我解释这里出了什么问题。 是否还有其他设置(memp_n_udp_pcb除外)当使用超过预定义数量的4个UDP套接字时我必须更改? 为什么lwip_sendto在没有问题的情况下发送几百个数据包后会失败?

0 个答案:

没有答案