首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中调整UDP广播速率

在python中调整UDP广播速率
EN

Stack Overflow用户
提问于 2012-12-04 19:48:37
回答 1查看 783关注 0票数 1

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

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

任何帮助和建议都会非常有帮助。

以下是代码

代码语言:javascript
复制
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  

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

提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2012-12-06 02:57:21

如果你想以线性的方式完成它,你可以使用下面这样的方法

代码语言:javascript
复制
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显然需要改变。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13702219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档