软件运行环境:
服务端: ubuntu 14.04.2 server
客户端: Android pad
数据跟踪工具: 无线网卡 + Wireshark + notepad ++
———————————————————————————————————————
当客户端和服务器进行数据交互的过程中,测试过程中发现数据异常,但是在彼此程序猿的通过打印输出数据方式跟踪数据的异常,而且在彼此都肯定数据没问题的时候,是非常蛋疼的,到底是谁的错?那么我们就从数据的传输介质中接受端或者发送端入口处截取数据分析。
在此,我采用的是通过截取网络数据到Android设备的入口处截取。由于在移动设备上采用抓包再分析是一个很麻烦的过程,还需要root设备,如若采用模拟器 + tcpdump操作,过程繁琐。本人在此分享一种通过在主机上(台式机)插入一个无线网卡,让其成为一个热点并且用移动设备连接这个热点,在PC端用Wireshark抓取台式机无线网卡的数据,就可以很easy的分析数据了。具体分为以下几步(针对客户端数据显示偶然性中文乱码)
插入无线网卡,下载360免费wifi(真心比wifi精灵好使,wifi精灵特么程序老死),配置好无线热点,用移动设备连接热点
如上图,设备已经连接好热点,下面就是打开PC端的Wireshark工具
如图所示选择无线连接,点击Start开始抓取无线网卡上的数据包。
设置过滤条件(例如下图中过滤来自服务器169.254.1.12的数据),在移动设备上操作软件,用Wireshark将数据打印到txt文本,由于是中文字符,所以要要分析字符的内码,所以在txt数据包中找到关键数据,并将中文字符的16进制码拷入notepad++ 中用Hex-Editor编辑,最后把编辑后的数据保存为html,用浏览器打卡,查看中文显示是否正确(如下图)
如上图所示,截取的数据真实字符为【 某某会议室 ISC TV 】,将截取的16进制放入notepad++ 的Hex-Editor编辑器中编辑,并保存为html文件,最后用浏览器打开,选择不同编码格式
notepad++ Hex-Editor 编辑如下图所示
用浏览器打开
将正确中文数据和乱码中文数据分别用Wireshark截取两份,比较。 由于从事的是服务端开发,所以通过此种方法顺利的把责任推给 移动客户端的程序猿。不过目前没有找到乱码的原因,由于数据是分两个网络数据包发送过去的,目前猜测可能客户端在接受数据包,拼接的时候出现问题,或者json库使用的过程中转utf-8编码出现问题。