问题描述
我在使用套接字安全性 (mbedTLS yotta 2.3.2) 时遇到数据接收延迟。
场景:
-> 当从云端发送 5kb 的有效负载时,我通过设备上的套接字以 2k、2k 和 1k 的 3 个块(预期)接收数据。 “select”套接字调用用于套接字处的数据轮询。
API() {
fd_set read_fds,write_fds,except_fds;
int channel_fd = 0;
timeval stSelect;
stSelect.tv_sec = 0;
stSelect.tv_usec = 100000;
FD_ZERO(&read_fds);
FD_ZERO(&write_fds);
FD_ZERO(&except_fds);
if (channel_is_ready(&client->channel,FD_READ))
FD_SET(channel_fd,&read_fds);
if (channel_is_ready(&client->channel,FD_WRITE))
FD_SET(channel_fd,&write_fds);
int poll_result = select(channel_fd + 1,&read_fds,&write_fds,NULL,&stSelect);
if (poll_result == 0) {
check_if_alive();
} else if (poll_result > 0) {
if (channel_fd >= 0) {
if (FD_ISSET(channel_fd,&read_fds)) {
// read 2kb at once
}
if (FD_ISSET(channel_fd,&write_fds)) {
// do something...
}
}
FD_CLR(0,&read_fds);
FD_CLR(0,&write_fds);
FD_CLR(0,&except_fds);
}
问题:
- 在第 1(2kb) 块和第 2(2kb) 块之间有大约 50 秒到 2 分钟的延迟,这是完全出乎意料的。在套接字上没有延迟(预期)接收到第 2 个(2kb)和第 3 个(1kb)块。
- 没有套接字安全(mbedTLS),数据接收工作得很好,即接收时没有延迟 套接字中的数据块。
- 我已经在 GSM、以太网和 WiFi 接口中测试并遇到了同样的问题。
可能是什么原因?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)