[英]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.