精华内容
下载资源
问答
  • 简单快速处理网络请求超时的方法

    千次阅读 2020-04-13 09:35:12
    最近在调试联网操作的时候碰到网络请求超时的问题,以下是简单快速处理网络超时的方法: 使用android提供的工具类AsyncTask类,此类提供了一个AsyncTask.execute().get(timeout, unit);方法用于处理用户的请求超时的...

    最近在调试联网操作的时候碰到网络请求超时的问题,以下是简单快速处理网络超时的方法:
    使用android提供的工具类AsyncTask类,此类提供了一个AsyncTask.execute().get(timeout, unit);方法用于处理用户的请求超时的操作,可以设置请求超时的时间(timeout)以及请求时间的单位(unit)。

    例如:设置超时时间为2秒,单位为毫秒

    try {
    AsyncTask(此处应该是它的实例化对象).execute().get(2000, TimeUnit.MILLISECONDS);
    } catch (InterruptedException e) {
    e.printStackTrace();
    } catch (ExecutionException e) {
    e.printStackTrace();
    } catch (TimeoutException e) {
    //此处用来处理用户超时后的操作,例如:跳转界面,弹出提示框。
    //备注:此处不能直接进行界面操作,否则回报ANR异常。如果相处理界面操作,则和handler进行结合
    }
    其次还可以用handler机制,有些复杂,后续用到再做分析。

    展开全文
  • 网络协议分析工具Ethereal的使用

    千次阅读 2011-11-28 21:21:02
    一:学习使用网络协议分析工具Ethereal的方法,并用它来分析一些协议。 实验步骤: 1. 用“ipconfig”命令获得本机的MAC地址和缺省路由器的IP地址;(注:缺省路由器即 ”Default Gateway”) 命令行:Start->...


    大学时计算机网络课的实验报告,当时提不起兴趣,今天看来还挺有用的。可以学习下怎样抓数据包,然后分析程序的通信协议。


    一:学习使用网络协议分析工具Ethereal的方法,并用它来分析一些协议。

    实验步骤:

    1.  用“ipconfig”命令获得本机的MAC地址和缺省路由器的IP地址;(注:缺省路由器即 ”Default Gateway”)
    命令行:Start->Run->CMD->ipconfig /all >C:\Mac.txt(在命令行中把ipconfig命令保存在文本文档里面备用)
    结果:本机Mac地址:00.09.73.4B.8A.D7  缺省路由器IP:192.168.8.254

    步骤截图:


    1(本机网络信息:Mac.txt


    2.  用“arp”命令清空本机的缓存:
    命令行:Start->Run->CMD->arp –d


    2arp命令 –d参数的帮助说明)

     

    3.  运行Ethereal,开始捕获所有属于ARP协议或ICMP协议的,并且源或目的MAC地址是本机的包:


    3Capture->Options中关于网卡设置和Capture Filter



    4(抓包截图)


    4.  执行命令:“ping   缺省路由器的IP地址:


    5(捕获包)



    6ping 过程)


    二:Ethereal观察tracert命令的工作过程:


    1.用Ethereal语法内容及参数说明:

    命令行操作步骤:Start->Run->CMD->tracert


    图1(Tracert命令 全部参数的帮助说明)


    2.运行Ethereal, 设定源和目的MAC地址是本机的包,捕获tracert命令中用到的消息:

    Tracert使用ICMP,相应过滤规则为:

    ether host 00:09:73:4B:8A:D7 and icmp


    图3(Capture->Options中关于网卡设置和Capture Filter)

     

    3.执行“tracert -d www.dlut.edu.cn” ,捕获包:

     

    执行命令:tracert -d www.dlut.edu.cn


    (执行命令  tracert –d www.dlut.edu.cn



    4(抓包截图)



    5(捕获包)


    4.Tracert工作原理:

    Tracert使用ICMP消息,具体地讲,tracert发出的是Echo Request消息,触发返回的是Time Exceeded消息和Echo Reply消息。

    Tracert利用icmp数据报和IP数据报头部中的TTL值。

    TTL(Time To Live)是一个IP数据报的生存时间,当每个IP数据报经过路由器的时候都会把TTL值减去1或者减去在路由器中停留的时间,但是大多数数据报在路由器中停留的时间都小于1秒种,因此实际上就是在TTL值减去了1。这样,TTL值就相当于一个路由器的计数器。当路由器接收到一个TTL为0或者1的IP数据报的时候,路由器就不再转发这个数据了,而直接丢弃,并且发送一个ICMP“超时”信息给源主机。Tracert程序的关键就是这个回显的ICMP报文的IP报头的信源地址就是这个路由器的IP地址。如果到达了目的主机,并没有任何反应,所以,Tracert还同时发送一个UDP信息给目的主机,并且选择一个很大的值作为UDP的端口,使主机的任何一个应用程序都不使用这个端口。当达到目的主机的时候,UDP模块就产生一个“端口不可到达”的错误,这样就能判断是否是到达目的地了。

    决定走的路向目的地发送icmp的回声请求消息中具有不同生存时间(ttl )值送往目的地。每个路由器沿着须减量有关的ttl在一个ip包,由至少1才转发。当的ttl就一包到达0时,路由器可望返回一个icmp的时间超过讯息给源计算机。 tracert确定路径派遣首回声请求消息具有的ttl的1和递增有关的ttl由1对以后每次传输,直到目标响应或最大数目的啤酒花是达成共识。最大数目的啤酒花是30默认,并可以指定使用- h参数。道路是取决于研究icmp的时间超过讯息经由中间路由器和回声答复讯息经由目的地。不过,有些路由器不返回时间超过讯息给包过期的ttl价值观和可能是无形的,以该tracert命令。在这种情况下,一排星号( * )显示为合。


     三:Ethereal观察TCP连接的建立过程和终止过程:


    a.       过滤规则:tcp port 23

    b.       三次握手:


    过程:一端打开一个SOCKET,另一方连接,服务器端被打开,客户端向服务器端发送一个SYN    ,建立一次握手,服务器端返回一个SYNACK完成第二次握手,客户端发送一个ACK完成第三次握手。


    c.        终止过程:


    过程:主动方发送一个FIN,另一方进入CLOSE,WAIT状态,并发送ACK,被动方发送FIN,被动方进入TIME,WAIT状态,发送ACK确认,CLOSE

     

    d.       TELNET服务器首先发起连接关闭。

     

    四:用Ethereal观察使用DNS来进行域名解析的过程:


    a.  过滤规则:UDP PORT 53



    b.       DNS服务器210.30.96.99发送一个DNS询问请求www.dlut.edu.cnDNS服务器找到了www.dlut.edu.cn所对应的IP地址,然后回发给请求方。



    c.       MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。Tommx.163.net就是邮件交换服务器的域名。




    展开全文
  • URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和... 每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络请求后在 Http

    URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection。另外一个重要的类是URL,通常URL可以通过传给构造器一个String类型的参数来生成一个指向特定地址的URL实例。
    每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字。

    • 需求,发起一个Post请求,并携带参数给服务器,服务器返回Json数据

    • 代码实现

    
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.HashMap;
    
    /**
     * Created by yuandl on 2016-10-18.
     * HttpURLConnection测试
     */
    public class URLConnectionTest {
        public static void main(String[] args) {
            String url = "http://10.58.178.72/intco/mobi/member/login";
            HashMap<String, String> params = new HashMap<>();
            params.put("username", "13468857714");
            params.put("pwd", MD5.md5("123456").toLowerCase());
            requestPost(url, params);
        }
    
        /**
         * Post请求
         *
         * @param httpUrl
         * @param paramsMap
         */
        private static void requestPost(String httpUrl, HashMap<String, String> paramsMap) {
            try {
                String baseUrl = httpUrl;
                //合成参数
                StringBuilder tempParams = new StringBuilder();
                int pos = 0;
                for (String key : paramsMap.keySet()) {
                    if (pos > 0) {
                        tempParams.append("&");
                    }
                    tempParams.append(String.format("%s=%s", key, URLEncoder.encode(paramsMap.get(key), "utf-8")));
                    pos++;
                }
                String params = tempParams.toString();
                System.out.println("Post方式请求地址httpUrl--->" + params);
                System.out.println("Post方式请求参数params--->" + params);
                // 请求的参数转换为byte数组
                byte[] postData = params.getBytes();
                // 新建一个URL对象
                URL url = new URL(baseUrl);
                // 打开一个HttpURLConnection连接
                HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
                // 设置连接超时时间
                urlConn.setConnectTimeout(5 * 1000);
                //设置从主机读取数据超时
                urlConn.setReadTimeout(5 * 1000);
                // Post请求必须设置允许输出 默认false
                urlConn.setDoOutput(true);
                //设置请求允许输入 默认是true
                urlConn.setDoInput(true);
                // Post请求不能使用缓存
                urlConn.setUseCaches(false);
                // 设置为Post请求
                urlConn.setRequestMethod("POST");
                //设置本次连接是否自动处理重定向
                urlConn.setInstanceFollowRedirects(true);
                // 配置请求Content-Type
                urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                // 开始连接
                urlConn.connect();
                // 发送请求参数
                DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream());
                dos.write(postData);
                dos.flush();
                dos.close();
                // 判断请求是否成功
                if (urlConn.getResponseCode() == 200) {
                    // 获取返回的数据
                    String result = streamToString(urlConn.getInputStream());
                    System.out.println("Post方式请求成功,result--->" + result);
                } else {
                    System.out.println("Post方式请求失败");
                }
                // 关闭连接
                urlConn.disconnect();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 将输入流转换成字符串
         *
         * @param is 从网络获取的输入流
         * @return
         */
        public static String streamToString(InputStream is) {
            try {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int len = 0;
                while ((len = is.read(buffer)) != -1) {
                    baos.write(buffer, 0, len);
                }
                baos.close();
                is.close();
                byte[] byteArray = baos.toByteArray();
                return new String(byteArray);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    }
    • 打印结果
    
    Post方式请求地址httpUrl--->pwd=e10adc3949ba59abbe56e057f20f883e&username=13468857714
    Post方式请求参数params--->pwd=e10adc3949ba59abbe56e057f20f883e&username=13468857714
    Post方式请求成功,result--->{"status":1,"data":{"mId":"426e743224db4ecb8313e069982a7496","mName":"*东亮","pwd":"f241426298243cb7f6f97da58749ffb386c1457d","sex":"1","mobile":"13468857714","authentication":"0","personal":"0","isMain":"1","parentId":"0","newOrold":"1","imgurl":"http://10.58.178.72/intco/upload/img/member/portrait/2016/10/9331f754fbb742d99f6e61dcee0fe61d.jpg","state":"1","rongcloud_token":"1XHoYMAzlXidThqzyftV8at+qlfSNm8M8gqvzen0AUEV4lvsXAvmBJF0GQBkh5JP1I3XDUvd60sWEglC4+KRsnv5d+pcovzErw8ekgl7y6fM3gYaOuFDcqN0iaV2F2PAOM4jDTjH9M8="},"msg":"登录成功!"}
    


    • 总结
      • HttpURLConnection的connect()函数,实际上只是建立了一个与服务器的tcp连接,并没有实际发送http请求。 无论是post还是get,http请求实际上直到HttpURLConnection的getInputStream()这个函数里面才正式发送出去。
      • 在用POST方式发送URL请求时,URL请求参数的设定顺序是重中之重, 对connection对象的一切配置(那一堆set函数) 都必须要在connect()函数执行之前完成。而对outputStream的写操作,又必须要在inputStream的读操作之前。 这些顺序实际上是由http请求的格式决定的。
      • http请求实际上由两部分组成, 一个是http头,所有关于此次http请求的配置都在http头里面定义, 一个是正文content。 connect()函数会根据HttpURLConnection对象的配置值生成http头部信息,因此在调用connect函数之前, 就必须把所有的配置准备好。
      • 在http头后面紧跟着的是http请求的正文,正文的内容是通过outputStream流写入的,实际上outputStream不是一个网络流,充其量是个字符串流,往里面写入的东西不会立即发送到网络, 而是存在于内存缓冲区中,待outputStream流关闭时,根据输入的内容生成http正文。 至此,http请求的东西已经全部准备就绪。在getInputStream()函数调用的时候,就会把准备好的http请求 正式发送到服务器了,然后返回一个输入流,用于读取服务器对于此次http请求的返回信息。由于http 请求在getInputStream的时候已经发送出去了(包括http头和正文),因此在getInputStream()函数 之后对connection对象进行设置(对http头的信息进行修改)或者写入outputStream(对正文进行修改) 都是没有意义的了,执行这些操作会导致异常的发生。
    • 分析

    HttpURLConnection是Java层提供的标准网络请求工具类,可以实现各种功能。通过以上的代码和返回的请求结果可以知道,我们知道其实在Android中无论什么网络请求框架,最底层也是这样去实现的。我们可以在这个上面继续封装,不断完善就可以成为一个轻量级的Android网络请求框架。

    展开全文
  • iOS开发工具-网络封包分析工具Charles

    千次阅读 2016-07-27 15:46:52
    Charles 是在 Mac 下常用的截取网络封包的工具,在做 iOS 开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问...

    http://blog.devtang.com/2013/12/11/network-tool-charles-intr/

    Charles 是在 Mac 下常用的截取网络封包的工具,在做 iOS 开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

    Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。

    因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。

    Charles 主要的功能包括:

    1. 支持 SSL 代理。可以截取分析 SSL 的请求。
    2. 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
    3. 支持 AJAX 调试。可以自动将 json 或 xml 数据格式化,方便查看。
    4. 支持 AMF 调试。可以将 Flash Remoting 或 Flex Remoting 信息格式化,方便查看。
    5. 支持重发网络请求,方便后端调试。
    6. 支持修改网络请求参数。
    7. 支持网络请求的截获并动态修改。
    8. 检查 HTML,CSS 和 RSS 内容是否符合 W3C 标准

    安装 Charles

    去 Charles 的官方网站(http://www.charlesproxy.com)下载最新版的 Charles 安装包,是一个 dmg 后缀的文件。打开后将 Charles 拖到 Application 目录 下即完成安装。

    安装 SSL 证书

    如果你需要截取分析 SSL 协议相关的内容。那么需要安装 Charles 的 CA 证书。具体步骤如下:

    1. 去 http://www.charlesproxy.com/ssl.zip 下载 CA 证书文件。
    2. 解压该 zip 文件后,双击其中的 .crt 文件,这时候在弹出的菜单中选择 “总是信任”,如下所示:
    3. 从钥匙串访问中即可看到添加成功的证书。如下所示:

    将 Charles 设置成系统代理

    之前提到,Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。

    启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy” 来将 Charles 设置成系统代理。如下所示:

    之后,你就可以看到源源不断的网络请求出现在 Charles 的界面中。

    Charles 主界面介绍

    Charles 主要提供 2 种查看封包的视图,分别名为 “Structure” 和 “Sequence”。

    1. Structure 视图将网络请求按访问的域名分类。
    2. Sequence 视图将网络请求按访问的时间排序。

    大家可以根据具体的需要在这两种视图之前来回切换。

    对于某一个具体的网络请求,你可以查看其详细的请求内容和响应内容。如果响应内容是 JSON 格式的,那么 Charles 可以自动帮你将 JSON 内容格式化,方便你查看。

    过滤网络请求

    通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,我们有 2 种办法。

    1. 在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://yuantiku.com , 那么只需要在 Filter 栏中填入 yuantiku 即可。

    2. 在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:

    通常情况下,我们使用方法 1 做一些临时性的封包过滤,使用方法 2 做一些经常性的封包过滤。

    截取 iPhone 上的网络封包

    Charles 通常用来截取本地上的网络封包,但是当我们需要时,我们也可以用来截取其它设备上的网络请求。下面我就以 iPhone 为例,讲解如何进行相应操作。

    Charles 上的设置

    要截取 iPhone 上的网络请求,我们首先需要将 Charles 的代理功能打开。在 Charles 的菜单栏上选择 “Proxy”->”Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。如下图所示:

    iPhone 上的设置

    首先我们需要获取 Charles 运行所在电脑的 IP 地址,打开 Terminal,输入ifconfig en0, 即可获得该电脑的 IP,如下图所示:

    在 iPhone 的 “设置”->“无线局域网 “中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有 “HTTP 代理” 一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888,如下图所示:

    设置好之后,我们打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单(如下图所示),点击 “Allow” 即可完成设置。

    截取 SSL 信息

    Charles 默认并不截取 SSL 的信息,如果你想对截取某个网站上的所有 SSL 网络请求,可以在该请求上右击,选择 SSL proxy,如下图所示:

    这样,对于该 Host 的所有 SSL 请求可以被截取到了。

    模拟慢速网络

    在做 iPhone 开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对此需求提供了很好的支持。

    在 Charles 的菜单上,选择 “Proxy”->”Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。如下图所示:

    如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。

    修改网络请求内容

    有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择 “Edit”,即可创建一个可编辑的网络请求。如下所示:

    我们可以修改该请求的任何信息,包括 url 地址,端口,参数等,之后点击 “Execute” 即可发送该修改后的网络请求(如下图所示)。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便。

    过滤

    在 Charles 的菜单栏选择 Proxy->Recording Settings,然后选择 Include 栏,选择Add,然后填入需要监控的协议,主机地址,端口号,这样就达到了过滤的目的。如下图:



    还有一种方法就是在一个网址上右击,选择Focus,然后其他的请求就会被放到一个叫Other Host的文件夹里面,这样也达到了过滤的目的。


    断点

    断点的功能搞开发不会不知道,在Charles发起一个请求的时候,我们是可以给某个请求打一个断点的,然后来观察或者修改请求或者返回的内容,但是在这过程中药注意请求的超时时间问题。要针对某一个请求设置断点,只需要在这个请求网址右击选择Breakpoints就可以断点某一个请求了。


    模拟网速慢

    有时候在开发的时候我们想要模拟一下网络慢的情况,这时候Charles他是可以帮助到你的,在Proxy->Throttle Setting,然后选择Enable Throttling,在Throttle Preset下选择网络类型即可,具体设置你可以自行拿捏。


    请求重定向

    请求重定向的作用是什么呢?开发中一般都是测试环境,如果我们想对比一下和线上版本的区别的话,可以讲测试的请求重定向到正式环境下。在选择 Tools->`Map Remote下:


    内容替换

    有时候我们会测一下请求的参数不同会带来不同的返回结果以测试是否达到业务需求,或者需要不同的返回结果来验证我们对数据的处理是否正确,这时候需要后台的同事配合,但是有了Charles,我们可以自己把控接口返回来的内容,比如数据的空与否,数据的长短等等。在Tools->Rewrite Settings下:


    其他

    Charles还有一下其他的妙用。慢慢的去发掘吧!



    文/张飞_(简书作者)
    原文链接:http://www.jianshu.com/p/fdd7c681929c
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

    总结

    通过 Charles 软件,我们可以很方便地在日常开发中,截取和调试网络请求内容,分析封包协议以及模拟慢速网络。用好 Charles 可以极大的方便我们对于带有网络请求的 App 的开发和调试。


    展开全文
  • JAVA Socket超时分析

    千次阅读 2012-04-23 21:36:34
    套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个...侦听套接字只能接收新的连接请求,不能接收实际的数据包。 套接字是基于TCP/IP实现
  • Charles 的简介如何安装 Charles将 Charles 设置成系统代理Charles 主界面介绍过滤网络请求截取 iPhone 上的网络封包截取 Https 通讯信息模拟慢速网络修改网络请求内容给服务器做压力测试修改服务器返回内容总结 ...
  • 性能之巅:Linux网络性能分析工具

    千次阅读 2015-12-18 15:30:51
    本文节选自格雷格著《性能之巅:洞悉系统、企业与云计算》中第10.6节,介绍了其中Linux部分网络性能分析工具的使用方法。 本文介绍基于Linux操作系统的网络性能分析工具。它们的使用策略参见前面的部分。 本节...
  • BaseNetWork : Network 接口实现类,用于封装网络请求,并且对请求结果封装,且实现网络请求错误重试机制。 HttpStack:执行网络请求接口 HurlStack:HttpStack 接口实现类,用于真正执行网络请求,并且得到请求...
  • HTTP协议及其请求分析

    千次阅读 2015-04-09 10:22:41
    HTTP协议及其请求分析    众所周知,Internet的基本协议是TCP/IP协议,目前广泛采用的FTP、Archie Gopher等是建立在TCP/IP协议之上的应用层协议,不同的协议对应着不同的应用。    WWW服务器使用的主要...
  • WireShark是一个非常准确和稳定的tcp抓包工具,但看其40多m的安装包就可以想象其功能的强大,借助其功能强大的表达式筛选器,可以迅速的筛选出来我们所需要报文和记录,最近我就通过WireShark推断网络性能问题的故障...
  • Charles默认并不截取SSL的信息,如果你想对截取某个网站上的所有SSL网络请求,可以在该请求上右击,选择SSL proxy,如下图所示: 这样,对于该Host的所有SSL请求可以被截取到了。 修改网络请求内容 ...
  • Android网络请求

    千次阅读 2018-03-12 17:28:08
    1,Android网络编程系列链接:http://liuwangshu.cn/application/network/1-http.html1.HTTP简介HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式...简单快速:客户向服务器请求服务时...
  • N点 连接网络失败超时

    千次阅读 2014-06-21 12:02:06
    本文解决n点虚拟主机管理软件遇到官方网站打不开时n点配置工具不能成功的问题 在解决问题之前,先评价一下n点吧,从免费角度来讲,n点算是比较不错的主机管理软件了,功能简洁大方,得心应手,就目前的基本功能来说...
  • 原文地址:... 本文介绍基于Linux操作系统的网络性能分析工具。它们的使用策略参见前面的部分。 本节介绍的工具列于下表中。 Linux Solaris 描述 netstat netsta
  • okGo项目由于没有维护,性能有点跟不上。现在的主流网络请求框架基本上都选用的是retrofit 公司项目原来使用的是OkGo网络请求框架,后来全部替换为retrofit。 本文重点介绍一下retrofit的封装与项目中实际使用。
  • 转自:python爬虫 - python requests网络请求简洁之道 requests简介 requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。大神kennethreitz的作品,简易明了的HTTP请求...
  • ng是一个与802.11标准的无线网络分析有关的安全软件,主要功能有:网络侦测,数据包嗅探,WEP和WPA/WPA2-PSK破解,他可以恢复密钥一旦足够的数据包已被抓获,它实现了标准FMS攻击并提供一些优化像Korek攻击,以及全新...
  • 请结合附件:Ping的实现原理与ping.cpp的内容,编写一个程序,使其能够实现简单的ping的功能,即判断目标网站是否可以连接,然后通过Wireshark进行抓包分析其ICMP协议,指出哪个数据包是ping的请求(request),哪个...
  • 项目中网络请求使用避免不了,但选择合适的网络请求框架很重要。上一篇对okHttp网络框架的使用和源码分析进行了简单的讲解,也简单封装了工具类。但由于该工具类中的方法剧增,各种重载方法,导致使用起来不方便。接...
  • Linux性能优化-网络请求延迟变大

    千次阅读 2019-02-22 09:45:23
    网络请求延迟变大
  • 网络爬虫-http请求方式

    千次阅读 2017-06-23 17:55:44
    网络爬虫-http请求方式
  • Android安卓网络请求性能优化

    千次阅读 2016-12-14 10:29:29
    1.服务器合理部署 不同区域,部署服务器。 2.服务端提供不同分辨率的图片 上传自己的手机分辨率,或者需要的尺寸,返回对应的图片。 3.合理的接口设计 合理的接口设计,...2.请求优先级设置 比如进到APP,有多个请求
  • 深入浅出的理解Android网络请求框架

    千次阅读 2016-10-10 20:11:17
    网络框架
  • 最后确认为加密机不是在同一网段内,网络连接方面出现延时现象导致交易超时失败,将加密机切换到同一网段后,正常。 B/S端、app端、或其他终端的此类现在问题分析及总结: 1.先确定压力机的负载情况,是不是
  • 10.1 概述  熟悉UNIX/Linux网络编程的读者知道,在编写网络通信程序的...作为Web服务器网络应用程序,Lighttpd当然也毫不例外地要调用这些系统函数来接受客户端请求,提供资源服务。在第8章里,我们跳过了监听描...
  • 业务场景 ...于是我就拿用户提供的paypal交易号去查paypal商户管理平台查看用户是否已经完成了支付,结果发现用户真的完成了支付,但是我们的系统订单状态却是未支付状态,通过查看数据对比分析基于只有...
  • 使用wireshark抓包并进行网络协议分析

    万次阅读 多人点赞 2018-10-18 15:37:35
    这次实验并不是对所有的网络协议都进行分析,而是从下面这个问题出发(面试常被问)。从这一过程中复习学过的网络协议。使用的工具是wireshark。 问题:在浏览器中输入URL后,执行的过程。会用到哪些协议? 例如:...
  • 性能分析工具

    千次阅读 2012-11-30 11:13:57
    主要包括三个小工具: (1)Performance Analyzer:性能分析,找到软件性能比较热的部分,一般也就是性能瓶颈的关键点。 (2)Intel Threading Checker:用于查找线程错误, 能够检测资源竞争、线程死锁等问题 ...
  • 我们只能通过各种系统日志来分析网站的运行状况,对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进的地方。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,064
精华内容 17,225
关键字:

网络请求超时分析工具