我们正在使用C WEBRTC数据频道库,并且在我们的测试应用程序中,发送了几个小数据包,该数据包完全构成约256KB,usrsctp_sendv()
调用返回-1(使用errno作为 EWOULDBLOCK/EAGAIN
,意思是"暂时不可用的资源"(。我们认为这是因为我们遇到了USRSCTP的发送缓冲区限制,默认情况下为256 kb。我们尝试在每个发送呼叫之间添加几个睡眠延迟,以希望它可以清除缓冲区,但没有任何可行。
接收方,(一个JS网页(确实确实接收了我们发送的所有字节,直到错误出现为止。还值得注意的是,只有当我们尝试将数据从C 应用程序发送到JS而不是相反时,才会发生这种情况。我们尝试环顾Mozilla的Datachannels实现,但似乎无法就问题的含义得出任何结论。
很难立即回答这样的问题。我将开始研究Wireshark跟踪,以查看您的远程侧(JS页面(是否实际确认您发送的数据(E.I.如果Sack块被回发送(,并且在这些袋中报告的接收缓冲区(A_RWND(的值是多少。这可能不是您身边的问题,但是您仅仅因为发送side SCTP无法从缓冲区中刷新数据,因为它仍在等待从远程端到的交付确认。请提供有关您的案件的更多详细信息,此外,如果可以为您的JS页面提供示例代码。