IOS 网络程序开发时数据监控

开发网络程序时,我们能够直观看到往来数据,对开发是十分便利的。这里提供了几种方法:

一、虚拟网卡

1.在iPhone或iPad上创建一个RVI(remote virtual interface)虚拟网卡

用usb把设备和mac相连接,打开命令行工具,输入命令:

rvictl -s abcdef01234563e91f1f2f8a8cb0841d2dafeebbc

这里那一长串东西是设备的UDID。使用iTunes可以查询到这个东西。(默认显示的是序列号,点一下序列号三个字,就会切换显示)。点击菜单 编辑-复制udid即可。

正常情况下,它会提示Starting device ********************* [SUCCEDDED] with interface rival 成功。

使用ifconfig -l命令测试一下:

2.使用tcpdump 命令,把数据包保存到.pcap 文件里

在终端输入命令:

sudo tcpdump -i rv0 -n -s 0 -w dumpFile.pcap tcp

参数说明 :

  • -i rv0 截获虚拟网卡的数据
  • -n 不使用dns
  • -s 0 截取整个数据包,而不是仅首字节
  • -w dumpFile.pcp  输出文件,是libpcap 文件格式
  • tcp  只截取tcp数据包

现在在设备上运行app,结束的时候,退出tcpdump.这个时候如果不再需要截获数据,也可以把虚拟网卡移除掉。

rvictl -x abcdef01234563e91f1f2f8a8cb0841d2dafeebbc

但现在这个数据文件还不容易使用,使用vim打开会看到全是乱码。

现在安装一个tcpreplay工具

brew install tcpreplay

我在操作的时候,遇到了这个错误:

Error: Cannot write to /usr/local/Cellar

先执行:

sudo
chown -R $USER /usr/local

安装以后,执行命令:

tcprewrite --dlt=enet --enet-dmac=00:11:22:33:44:55 --enet-smac=66:77:88:99:AA:BB --infile=dumpFile.pcap --outfile=dumpFileFinal.pcap

3.安装wireshark查看数据

Wireshark下载安装 。

Wireshark需要x11的支持。如果没有安装,启动Wireshark时会引导安装。也可以到这里下载安装:

http://xquartz.macosforge.org/landing/

启动wireshark,这时可能会提示Choose Application。点击Browser到"/Application/Utilities/XQuartz.app"。如果是安装最新的Wireshark,也可能不需要指定,它会自动识别。

注意开始打开可能比较慢,要耐心等待。

打开转换后的dumpFileFinal.pcap,可以看到数据内容。

二、http数据监测查看 HTTPArchive

网址:

http://www.softwareishard.com/blog/har-12-spec/

使用tcpdump获取的pcap也可以转为httpArchive查看,需要使用pcap2har的python脚本工具。

这个以后再另外专门介绍。

三、使用Instruments network profiling

测试时使用虚拟机是不能监测到数据的,需要连接物理机测试。

这是结果示例:

在这里不容易看到真实的数据,只能看到大致的通信情况。

原文:

http://blog.manbolo.com/2013/02/22/analysing-ios-app-network-performances-on-cellularwifi

时间: 2024-10-18 01:58:29

IOS 网络程序开发时数据监控的相关文章

iOS网络编程开发—JSON和XML数据解析

iOS网络编程开发—JSON解析 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]} 标准JSON格式的

iOS网络编程开发—HTTP协议

iOS网络编程开发—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位置,互联网上的每个资源都有一个唯一的URL 2.URL中常见的协议 (1)HTTP 超文本传输协议,访问的是远程的网络资源,格式是http:// http协议是在网络开发中最常用的协议 (2)file 访问的是本地计算机上的资源

iOS网络编程开发-NSURLConnection基本使用

iOS网络编程开发-NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.... (3)NSMutableURLRequest:NSURLRequest的子类 (4)NSURLConnection:负责发送请求,建立客户端和服务器的连接.发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据 二.NSU

iOS网络编程开发—网络编程基础

iOS网络编程开发—网络编程基础 一.网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐:QQ音乐

iOS网络编程开发GET请求和POST请求

iOS网络编程开发GET请求和POST请求 一.GET请求和POST请求简单说明 创建GET请求 // 1.设置请求路径 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]; NSURL *url=[NSURL URLWithString:urlStr]

微信小程序开发本地数据缓存教程

微信小程序开发过程中,本地数据缓存是必不可少的一部分.而且本地数据缓存的用途还挺多的,下面木鱼小铺(https://www.muyu007.cn)就和大家分享一下微信小程序开发本地数据缓存教程,希望对大家有所帮助! 第一步:读写本地数据缓存 微信小程序为了方便开发者缓存数据提供了读写本地数据缓存接口,读本地数据缓存采用的是wx.getStorage/wx.getStorageSync接口,写本地数据缓存的是wx.setStorage/wx.setStorageSync接口.其中以Sync结尾的是

网络程序开发实验报告

一.实验目的 1.熟悉和掌握WEB开发的基本理论和编程方法. 2.掌握使用ASP.NET进行网站开发的方法. 3.掌握Web应用程序与数据库的连接和数据库操作的方法. 二.实验原理 Web应用程序也叫动态网页.动态网页是相对于静态网页而言的,所谓静态网页,是指所有的网页内容都已事先设计完成,当用户通过网页浏览器(如最常见的IE浏览器)请求打开网页时,Web服务器就将这种事先设计好的网页一字不改地发送到用户的浏览器中供用户浏览.而动态网页则不同,动态网页至少有一部分内容并非事先设计,这部分内容要根

iOS应用程序开发之应用间的跳转

简介 配置和实现 判断应用启动方式 一.简介 最实际项目开发中,我们难免会遇到需要从一个应用跳转到另一个应用的情况.比如微信分享,实际就是一种应用间的跳转.但是有时候我们需要实现自己的两个应用间的跳转,以便可以推广我们其他的应用.这个时候我们需要使用UIApplication的openURL:的方法 二.配置 1??注册自定义的URL 首先被启动的应用需要向iPhone注册一个自定义URL协议.这是在你的项目文件夹的info.plist文件进行的 1. 右键,选择“Add Row”, Key值选

微信小程序开发之数据存储 参数传递 数据缓存

微信小程序开发内测一个月.数据传递的方式很少.经常遇到页面销毁后回传参数的问题,小程序中并没有类似Android的startActivityForResult的方法,也没有类似广播这样的通讯方式,更没有类似eventbus的轮子可用. 现在已知传递参数的方法只找到三种,先总结下.由于正处于内测阶段,文档也不是很稳定,经常修改,目前尚没有人造轮子. 先上GIF: 1.APP.js 我把常用且不会更改的参数放在APP.js的data里面了.在各个page中都可以拿到var app = getApp(