问题概述:AF_UNIX稳定发送,接收时突发。
我有一个应用程序B,通过Unix域数据报套接字接收数据。有一个对等应用程序A向其发送数据。A和B都在持续运行(并且是SCHED_FIFO)。我的应用程序A还打印接收时间。
对等应用程序B可以以不同的时间间隔发送数据(仅以毫秒为单位变化)。理想情况下(我所期望的),数据包发送延迟应与接收延迟完全匹配。例如:
我有一个应用程序B,通过Unix域数据报套接字接收数据。有一个对等应用程序A向其发送数据。A和B都在持续运行(并且是SCHED_FIFO)。我的应用程序A还打印接收时间。
对等应用程序B可以以不同的时间间隔发送数据(仅以毫秒为单位变化)。理想情况下(我所期望的),数据包发送延迟应与接收延迟完全匹配。例如:
A sends in time : 5ms 10ms 15ms 21ms 30ms 36ms
B should receive in time : 5+x ms 10+x ms 15+x ms 21+x ms ...
其中x是一个恒定的延迟。
但当我进行实验时,我观察到B中的情况是:
A sends in time : 5ms 10ms 15ms 21ms 30ms 36ms
B received in time : 5+w ms 10+x ms 15+y ms 21+z ms ...
(w、x、y、z是不同的延迟时间)。因此,在给定发送时间时无法预测接收时间。
这是因为Unix域套接字中涉及了一些缓冲。请建议一些解决问题的方法,以便从发送时间预测接收时间。我需要1毫秒精度。
(我正在使用vanilla Linux 3.0内核)