Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我试图为我的工作(发件人)实现 tcp lwip。我已将 TCP 发送缓冲区空间 TCP_SND_QUEUELEN 配置为 32。但是当丢包时 pcb->snd_queuelen 显示的值大于 32 并且客户端正在断开连接。为什么以及如何解决这个问题?我已将 TCP_MSS 配置为 1160,而 TCP_SND_BUF 为 (TCP_MSS * 16)。任何人请帮忙。
获得大于 TCP_SND_QUEUELEN 的值是正常的。已经有进一步的逻辑可以摆脱这种情况。由于在发送数据包时传递了标志 MSG_DONTWAIT,因此发送操作不能被阻塞,如果阻塞会返回错误。这就是关闭套接字的原因。