gpt4 book ai didi

c# - 性能比较 TcpClient 与 HttpWebRequest

转载 作者:可可西里 更新时间:2023-11-01 02:44:17 25 4
gpt4 key购买 nike

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

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

我的另一个想法是 using 语句。也许他们保持连接打开的时间比 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;

最佳答案

很明显,它们在做不同的事情 - 您没有向 TcpClient 发送任何数据,所以另一端一定已经知道该做什么。

WebRequest 版本中,您甚至可以发布一些数据...为什么在 TcpClient 版本中不需要这些数据?

基本上看起来您不是在比较苹果与苹果。鉴于您正在与服务器使用不同的协议(protocol),很可能您的特定服务器直接通过简化协议(protocol)使用 TcpClient 会更快。这与一般比较 HttpWebRequestTcpClient 不同。您不能真正进行这样的一般比较,因为 HTTP 是在 TCP 之上分层的。

关于c# - 性能比较 TcpClient 与 HttpWebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1460841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com