如何避免python中传入的udp数据包之间的高时间间隔?

问题描述

我正在尝试将udp数据包发送到本地网络上的python服务器,并使它们之间的延迟最小。机器通过wifi连接到路由器。 目前,我大约每8-12个数据包在2个传入数据包之间出现明显的延迟,这在我的用例中是不可接受的。

这是服务器和客户端的简化版本(其行为与完全版本中的行为完全相同,因此数据处理不会成为瓶颈)

服务器端:

TV-MA
-
PG-13
-
TV-14
-
PG-13
...
...

客户端:

from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor

class mainController(DatagramProtocol):
    def datagramReceived(self,data,addr):
        print(data) 

reactor.listenUDP(9234,mainController())
reactor.run()

我在3台路由器上进行了测试,在服务器端使用了套接字模块,并使用编译后的代码发送了数据包。 没有任何帮助。有时几分钟不会出现延迟,这是有希望的。我不需要每个包裹都到达。低延迟更重要。 我有什么可以做的吗?

更新

来自更新服务器的日志:

import time
import socket

s = socket.socket(socket.AF_INET,socket.soCK_DGRAM)
while True:
    time.sleep(0.05)
    s.sendto(b'a','192.168.0.122,9234')
    time.sleep(0.05)
    s.sendto(b'b',9234')
    time.sleep(0.05)
    s.sendto(b'c',9234')

使用修改后的代码获得:

0.01682591438293457
0.017333984375
0.017556190490722656
0.2058579921722412  - here the lag happens
8.58306884765625e-05 
4.00543212890625e-05
3.1948089599609375e-05
3.0994415283203125e-05
3.0040740966796875e-05
3.409385681152344e-05
3.0040740966796875e-05
2.9802322387695312e-05
3.0994415283203125e-05
3.504753112792969e-05
3.0040740966796875e-05
0.008923053741455078
0.01720905303955078
0.01634383201599121
0.016458988189697266

这是我的Wireshark日志:

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)