python
python中的标准库很强大,利用python标准库,可以实现很多功能。
编程基于以下原则:一是完全利用python3.7自带的标准库;二是软件界面和数据分离;三是充分考虑代码的复用性和以后的扩展性。
基于以上原则,把整个代码分为两个模块:sub_pingtest_data.py和sub_pingtest_gui.py。下面分别介绍两个模块。
- sub_pingtest_data.py ;
在这个模块中分别创建了五个类,分别是:检查IP地址是否合法checkip类;输入起始和结束IP地址,返回一个IP地址列表的ipsplit类;根据输入的IP地址获得相应的主机名、域和MAC地址getHostbyIP类;查看是远程主机是否在线CmdPingIP类;一个生产者、消费者的队列线程类QueueThreads。
检查IP地址是否合法checkip类主要用到python标准库中的re;主要是re.match(pattern,self.ip),其中pattern为ip地址的正则表达式:((???:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))).){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$)。
返回一个IP地址列表的ipsplit类相对简单。
获得相应的主机名、域和MAC地址getHostbyIP类,主要利用python标准库中的socket和subprocess.Popen()。
查看是远程主机是否在线CmdPingIP类,主要利用subprocess.Popen()。
生产者、消费者的队列线程类QueueThreads,主要用python标准库中的 threading和
Queue。 - sub_pingtest_gui.py ;这个模块主要实现界面设计,其中应用的主要控件包括Label,Entry,LabelFrame,Scrollbar,ttk.Treeview,Button等。
完整代码请到https://github.com/liufengqiang/net_tool下载