Bil*_*ver 1 c# asp.net tcp httpwebrequest
我将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;
Run Code Online (Sandbox Code Playgroud)
好吧,他们显然做了不同的事情 - 你没有发送任何数据TcpClient,所以另一端必须已经知道该做什么.
在WebRequest版本中你甚至发布了一些数据......为什么你不需要TcpClient版本中的数据?
基本上看起来你不是在比较苹果和苹果.鉴于您正在与服务器讨论不同的协议,很可能您的特定服务器可以更快地TcpClient直接使用简化协议.这与比较HttpWebRequest和TcpClient 一般情况不同.你不能真正进行这样的一般比较,因为HTTP是通过TCP分层开始的.
| 归档时间: |
|
| 查看次数: |
3570 次 |
| 最近记录: |