繁体   English   中英

在python中调整UDP广播速率

[英]adjust UDP broadcast rate in python

我正在python中使用UDP广播将数据包从移动节点发送到固定节点。 我想要的是在移动节点接近静态节点时提高数据速率,而在节点离开静态节点时降低数据速率,以便我可以将更多数量的数据包传输到接收节点。

实际上,我正在为我的论文进行实验,我想测量信号强度以及相对于静态节点的距离。 因此,基于接收信号强度的值,距离我想调整广播速率。

任何帮助和建议将非常有帮助。

这是代码

from socket import *
import os
import time

# A dummy string that I want to send
a = os.urandom(1400)

s = socket(AF_INET, SOCK_DGRAM)
s.bind(('', 0))
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)


# Send data along with the sequence number and current time
i=0  
while 1:  
    if os.system("iwconfig wlan0 | awk '/Signal level/ {print $4}'|cut -c 7-9") >= -90:   #-90 dbm is set as threshold  
        data = (str(i)+"###"+str(time.time())+"@@@"+ a.encode('hex'))[:1400] # only send 1400bytes of data  
        s.sendto(data, ('192.168.169.255', 5000))  
        i+=1  
    else sleep('<broadcast interval>') # sleep until the next broadcast interval  

我不太确定如何调整广播速率,所以我没有代码。

先感谢您

如果您希望以线性方式完成此操作,则可以使用如下所示的内容

def calc_delay(signal):
   rate = 11 * ( float(signal) + 90 ) / 20
   return(rate)

rate_cmd = 'iwconfig wlan0 rate %sM" % calc_delay(signal)
os.system(rate_cmd)

假设您得到的信号强度在-90到-70之间,并且无线卡的最大速率为11M。 因此,在循环中,您可以为该函数的返回值休眠。 如果信号强度在另一个范围内,则显然需要更改90和20。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM