我有一个基于Linux的无线网络应用程序,需要在延迟方面非常努力。即,与没有数据相比,数据包的迟到并不是更好。此外,套接字中的旧数据只能延迟较新的数据。
我正在查看是否从发送端有任何方法可以检测到套接字正在堆积旧数据,并在这种情况下刷新/丢弃它并发送新数据。
我知道接收器可以读取所有旧数据并丢弃。但是,这仍然会有所提升,并没有真正帮助加快速度,以及是否有一个发送方可以评估。
感谢您的帮助。
答案 0 :(得分:-1)
尝试在发送端关闭Nagle算法。此算法尝试将较小的数据包收集到较大的数据包中以减少开销,因此将其关闭可能意味着每个数据包立即发送。这是一个关闭它的代码段:
void noNagle (int socket)
{
int on = 1;
if (setsockopt (socket, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)) < 0)
bye ("Can not disable nagle algorithm\n");
}