C 使用lwip_sendto时mbox无效
我正在尝试使用freertos中的lwip堆栈通过多个套接字进行基于UDP的通信。我的第一个问题是,套接字创建失败,因为,C 使用lwip_sendto时mbox无效,c,freertos,lwip,C,Freertos,Lwip,我正在尝试使用freertos中的lwip堆栈通过多个套接字进行基于UDP的通信。我的第一个问题是,套接字创建失败,因为,lwip\u socket调用了netconn\u new,其中包含对TCPIP\u apimg(&msg)的调用,该调用返回了一个错误。我发现TCPIP\u APIMSG(&msg)中的错误是因为sys\u mbox\u valid(&mbox)返回false而产生的 在认识到我创建的UDP套接字数量超过lwip配置变量memp\u n\u UDP\u pcb所允许的数量后
lwip\u socket
调用了netconn\u new
,其中包含对TCPIP\u apimg(&msg)
的调用,该调用返回了一个错误。我发现TCPIP\u APIMSG(&msg)
中的错误是因为sys\u mbox\u valid(&mbox)
返回false而产生的
在认识到我创建的UDP套接字数量超过lwip配置变量memp\u n\u UDP\u pcb
所允许的数量后,我可以解决这个问题。我刚刚增加了memp\u n\u udp\u pcb
现在我遇到的问题是,lwip\u sendto
在发送大约300个数据包后停止工作。同样,原因似乎是TCPIP\u APIMSG(&msg)
中的无效mboxlwip\u sendto
callsnetconn\u send
,它调用TCPIP\u APIMSG(&msg)
,由于无效的mbox返回错误
我只是尝试在freertos中使用lwip堆栈,但我对lwip堆栈的实现细节没有经验。我不知道无效的mbox意味着什么以及如何解决这个问题
我希望有人能向我解释这里出了什么问题。
当使用超过预定义数量的4个udp套接字时,是否需要更改任何其他设置(memp_n_udp_pcb除外)?
为什么
lwip\u sendto
在发送几百个没有问题的数据包后失败?最好在讨论列表中询问/搜索lwip问题: