【发布时间】:2017-08-19 09:16:29
【问题描述】:
我有一个套接字,它在字节之间发送一个massiv,经常重复相同的信息,但接收器一次无法获得所有这些字节。我有办法减慢发送方的速度,但现在我有延迟,因为没有足够的字节来。我需要实时传输。
有没有办法让接收者读取最后一个传入的字节并丢弃其他字节然后在程序中继续执行?
while (sock->isConnect() && tcpsock->isConnect()) {
// with while instead of if, stuck in the loop
if (sock->RecData(buff, 14)) { //receiving 14 bytes from UDP
sendAngles2(buff);
logger->setLatenz(logger->RECV);
}
logger->setLatenz(logger->MAIN);
logger->LogData();
// rest of the code
}
【问题讨论】:
-
这是在专用线程中运行,还是作为更大主循环的一部分?
-
no这个循环是main()中最大的循环
-
UDP 是流而不是块协议。您必须读取所有字节才能到达您想要的字节。
-
愚蠢的问题,但是......每个数据报发送的大小总是 14字节吗?
-
@RichardCritten UDP不是流协议。 UDP 是一种数据报协议,这意味着您可以获取单独的消息。没有关于订购或可靠性的保证。您收到整条消息或根本没有消息。另一方面,TCP 是一种流协议。