Python编程:网络仿真与调试

2024-03-28 17:52:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python上学习网络编程:用TCP、UDP、ICMP、ARP等协议编写客户端服务器和客户端软件。在

我需要一个工具来模拟具有以下功能的N个主机的网络:

  1. 轻量级软件,可以创建N(2,5,10,…)个主机,每个主机上都有python解释器(都在我的电脑上!)。像Virtualbox这样的虚拟机看起来太重了,而且对RAM的要求很高。我只需要python解释器和网络堆栈支持。

  2. 配置整个网络质量的能力,如“丢弃10%的数据包”或“使信号延迟到500毫秒”

  3. 为每台主机单独配置对某些请求的响应的能力。像“平托”谷歌从主机#5应返回“远程网络不可访问”,但“ping to”雅虎从主机#5“应该可以。

  4. 当然,我的网络里有一个完整的日志记录。

是否有这样的软件或框架(适用于Windows 7和Linux)?


Tags: 工具功能网络服务器协议客户端软件编程
2条回答

对于仅监听,您可以创建多个接口(别名),如下所示:

ifconfig eth0:0 192.168.5.12 netmask255.255.255.0 up 
ifconfig eth0:1 192.168.5.13 netmask255.255.255.0 up

稍后,让应用程序的每个实例监听另一个接口。在

但是,如果你需要从不同的ifaces发送包,那么每次你都必须重新配置路由表。这不包括您指定的其他函数。在

我会选择一些轻量级的、高度可配置的linux发行版,在单独的虚拟机上没有ui。在

你必须编写自己的代码来覆盖你的具体规范

  1. 你可以模拟多个服务器使用一个服务器,每个主机有不同的端口-如果你想要一个不同的IP为每一个主机,你需要知道如何创建虚拟网络连接。在
  2. 要控制网络噪声,可以向python服务器应用程序添加randomtime.sleep语句。在
  3. 如果你自己编写代码,你可以在不同的端口上设置不同的应用程序以不同的方式响应。在
  4. 对于日志记录,pythonlogging模块非常出色。在

Python内置了一个simple HTTP server

import SimpleHTTPServer
import SocketServer

PORT = 8000

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()

或者您可以使用^{}之类的方法来服务python请求

^{pr2}$

只需将myapp替换为要执行的python命令。在

相关问题 更多 >