用自己電腦同時做Server和Client,想用WireShark來抓包分析一下問題,卻抓取不到
原因分析
因為WireShark只能抓取經過電腦網卡的包,由於我是使用localhost或者127.0.0.1進行測試的,流量是不經過電腦網卡的,Windows TCP/IP下沒有本地回路的接口,所以不能用常用的windows抓包驅動獲取到。比如winpcap,而wireshark是基於winpcap的,所以抓取不到,下面是解決方法
方法一:
1 . 以管理員身份打開命令提示符
2 . 添加路由
輸入 route add 本機ip mask 255.255.255.255 網關ip
如果不知道本機ip和網關ip,可以在命令行輸入ipconfig查看
eg:
route add 192.168.2.100 mask 255.255.255.255 192.168.2.1
(意思是:所有需要發往192.168.2.100 地址段的IP數據包,全部由 192.168.2.1 路徑轉發)
3. 將我們程序里面的localhost或者127.0.0.1替換成本機ip
4 . 使用WireShark即可抓到本地包
5 . 調試完成后刪除路由
使用route delete 本機ip mask 255.255.255.255 網關ip來刪除我們上面的更改,不然我們本機的所有報文都會先經過網卡再回到本機,會比較消耗性能。
eg:
route delete 192.168.2.100 mask 255.255.255.255 192.168.2.1
方法二:
1.使用 別的抓包工具
比如 smsniff 可以選擇列 可以右鍵導出數據流等等
比如 RawCap 沒有用過
比如 WSExplorer 在.net控制台應用程序或者WInForm中比較合適,自己在測試一遍
