gpt4 book ai didi

python - 如何使用Mininet Python API将UDP数据包从一台主机发送到另一台主机?

转载 作者:行者123 更新时间:2023-12-03 11:57:04 25 4
gpt4 key购买 nike

首先,在SingleSwitchTopo.py中,我建立了一个包含2台主机和1台交换机的网络。 h1和h2之间的Ping和iperf可以。然后,我让h1运行server.py,它充当服务器。 h2运行client.py,它将UDP数据包发送到h1,然后h1将接收数据并写入文件。但是为什么h1无法从h2获取数据?如何正确做到这一点?

SingleSwitchTopo.py

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel
from mininet.node import CPULimitedHost
from mininet.link import TCLink

class SingleSwitchTopo(Topo):
"Single switch connected to n hosts."
def build(self, n=2):
switch = self.addSwitch('s1')
for h in range(n):
host = self.addHost('h%s' % (h + 1), cpu=.6/n)
self.addLink(host, switch, bw=500, delay='10ms', loss=10, max_queue_size=100, use_htb=True)

def simpleTest():
"Create and test a simple network"
topo = SingleSwitchTopo(n=2)
net = Mininet(topo=topo, host=CPULimitedHost, link=TCLink)
net.start()
h1 = net.get('h1')
h2 = net.get('h2')
h1.cmd('kill %python')
h2.cmd('kill %python')
h1.cmd('python server.py &')
h2.cmd('python client.py %s ' % h1.IP())
net.stop()

if __name__ == '__main__':
setLogLevel('info')
simpleTest()

server.py
import socket
address = ('127.0.0.1', 9999)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(address)
f = open('/home/knshen/a.txt', 'w+')

while True:
data, addr = s.recvfrom(1024)
print 'data', data
f.write(data)
f.flush()
f.close()
s.close()

client.py
import socket
import sys
from time import sleep

address = (sys.argv[1], 9999)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
i = 1
while True:
s.sendto('hi : %d\n' % i, address)
i += 1
sleep(3)

s.close()

最佳答案

您可以使用iperf命令设置客户端服务器。

使用以下命令为服务器(h1)和客户端(h2)启动xterms

xterm h1 h2

然后在h1中运行
iperf -s -u -i 1 

启动udp服务器,该服务器以1秒的间隔发送数据包

然后在h2中运行
iperf -c 10.0.0.1 -u -b 1m -n 1000 

这将创建一个udp客户端,该客户端连接到地址为10.0.0.1的h1,带宽= 1M,要传输的字节数= 1000

这是显示各种iperf参数/功能的链接
http://openmaniak.com/iperf.php

关于python - 如何使用Mininet Python API将UDP数据包从一台主机发送到另一台主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35869439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com