代码之家  ›  专栏  ›  技术社区  ›  Billy Coover

TcpClient与HttpWebRequest的性能比较

  •  1
  • Billy Coover  · 技术社区  · 16 年前

    我正在将一个XML字符串发送到AIX框上的一个端口。我有两种连接到此框的方式(TcpClient和HttpWebRequest)。我有计时器,可以让我知道AIX盒处理我的请求和响应需要多长时间。

    TcpClient似乎比HttpWebRequest快100毫秒。我怀疑我的计时器位置可能不正确。无论哪种方式,我都不认为计时器的位置会造成响应时间上的如此大的差异。

    我的另一个想法是使用语句。也许他们保持连接打开的时间比TcpClient长。

    TcpClient方法是否更快?

    // TcpClient
    TcpClient client = new TcpClient(host, port);
    DateTime x = DateTime.Now;
    NetworkStream stream = client.GetStream();
    NetworkStream stream = client.GetStream();
    stream.Write(request, 0, request.Length);
    stream.Flush();
    while ((count = stream.Read(buffer, 0, buffer.Length)) > 0)
                response.Append(encoder.GetString(buffer, 0, count));
    DateTime y = DateTime.Now;
    totalMS = y.Subtract(x).TotalMilliseconds;
    
    
    // HttpWebRequest 
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(URI);
    using (Stream webStream = webRequest.GetRequestStream())
    {
        webStream.Write(postdata, 0, postdata.Length);
        webStream.Close();
        DateTime x = DateTime.Now;
        using (WebResponse webresponse = webRequest.GetResponse())
        {
            webresponse.Close();
            DateTime y = DateTime.Now;
            using (Stream rs = webresponse.GetResponseStream())
            {
                using (StreamReader sr = new StreamReader(rs, Encoding.Default))
                {
                    // Read response to end
                }
            }
        }
    }
    totalMS = y.Subtract(x).TotalMilliseconds;
    
    3 回复  |  直到 16 年前
        1
  •  6
  •   Jon Skeet    16 年前

    TcpClient ,所以另一端肯定已经知道该怎么办了。

    WebRequest TCP客户 版本

    直接通过简化协议。这和比较不同 HttpWebRequest TCP客户 制作

        2
  •  3
  •   Nick Berardi    16 年前

    TcpClient 在大多数情况下会更快,因为 HttpWebRequest 必须做很多其他的事情。。。例如,为HTTP请求构造头,并通过诸如分块请求之类的方式管理流连接。哪里 TCP客户 只是原始连接,没有内置所有HTTP标准。

        3
  •  2
  •   Jan Jongboom    16 年前

    只需使用System.Diagnostics.Stopwatch进行时间比较,它更精确。

    推荐文章