python 怎么获取 windows7 上的网络上下行数据 ?

2015-03-16 11:17:14 +08:00
 linuxzpf

1.之前用了psutil模块,后来发现psutil.network_io_counters()在win7上有bug,每次取到的都是相同的数据。所以考虑换其他的方式来获取。
2.现在可以选择的有wmi模块,但是听说效率很低。直接用WMIC取得话又不是所有的win上都有这个东东。

好纠结,求指导。最好能show me the code!
TKS

4197 次点击
所在节点    Python
16 条回复
dant
2015-03-16 11:23:46 +08:00
winpcap
dant
2015-03-16 11:24:26 +08:00
似乎楼主的需求不是抓包?那就不知道了
linuxzpf
2015-03-16 11:32:31 +08:00
@dant 不是抓包啦,是获取实时的上传和下载数据。
roricon
2015-03-16 11:47:56 +08:00
在一台linux的机器上把网卡开启混杂模式……然后监听本地局域网的通讯呢?
hahastudio
2015-03-16 12:00:36 +08:00
我不知道是不是它内部有刷新时间还是什么的,但我这里没问题

>>> psutil.net_io_counters()
snetio(bytes_sent=514669575, bytes_recv=440756437, packets_sent=759901, packets_recv=740639, errin=0, errout=0, dropin=0, dropout=0)
>>> psutil.net_io_counters()
snetio(bytes_sent=514670215, bytes_recv=440759928, packets_sent=759911, packets_recv=740650, errin=0, errout=0, dropin=0, dropout=0)

间隔是 ctrl + c/v 的间隔
linuxzpf
2015-03-16 12:14:12 +08:00
@roricon 网络是没有问题的,额。。。360都显示的出网络上下行速率,关键是要取到这些数据。
linuxzpf
2015-03-16 12:15:37 +08:00
@hahastudio 这个时间间隔是就是你2次执行的时间间隔,大部分都可以取到,怪就怪在我的取不到哇。只能看看有木有其他方法。
loading
2015-03-16 12:20:13 +08:00
python 速度跟不上,做了白做。
linuxzpf
2015-03-16 12:42:10 +08:00
@loading 没这么夸张吧
loading
2015-03-16 12:46:12 +08:00
http://stackoverflow.com/questions/438240/monitor-a-processs-network-usage

如果你只需要速度,可以调用另一个软件,这也是 python 编程的特点。
你要原生的话,等大神!
linuxzpf
2015-03-16 14:33:17 +08:00
@loading 这个netstat -e这个命令不错啊,就是不知道是不是所有的windows系统上都有
这个是系统自带的命令吧。
syv2
2015-03-16 17:04:50 +08:00
tcpdump好像也有Windows版呢
cfan8
2015-03-16 18:42:49 +08:00
用windows api改路由表,把流量都走你的python proxy上走,不过性能怎么样就难说了
lingxi27
2015-03-16 18:45:33 +08:00
调windows API吧

import win32api

然后去MSDN看看GetAdaptersInfo 和 GetIfEntry的用法
linuxzpf
2015-03-16 19:43:09 +08:00
@lingxi27 这个就有点复杂了嘛,MSND也没有取网络上下行的函数好像。
lingxi27
2015-03-17 10:01:46 +08:00
@linuxzpf 你真的去看了吗,我给你的这两个api可以满足你的需求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/177213

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX