问题总结:AF_UNIX稳定发送,突发接收。
我有一个通过 unix 域数据报套接字接收数据的应用程序 B。有一个对等应用程序 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 内核)