【发布时间】:2014-12-19 03:16:26
【问题描述】:
System.Net.Sockets.TcpClient 有问题。
一个简单的测试应用只是打开一个连接,发送一些数据,然后关闭。另一端有一个简单的服务器,它的性能很好。
代码看起来像这样:
var client = new TcpClient("localhost", 1234);
using (var stream = client.GetStream())
using (var writer = new StreamWriter(stream))
{
writer.Write("foo");
writer.flush();
}
client.Close();
它工作得很好,但我注意到单元测试的运行时间超过了 1000 毫秒。当我把它放在一个调用 10 次的循环中时,它是 > 10,000 毫秒。
在对客户端和服务器的计时进行了数小时的调试后,我发现它慢的地方。
解决方法是从这里更改代码:
var client = new TcpClient("localhost", 1234);
到这里:
var client = new TcpClient();
client.Connect("localhost", 1234);
这一切都不同了。现在一个 pass 大约需要 10ms,而 10 个 pass 则略小于 100ms。
为什么???
【问题讨论】:
-
这篇文章的最后一句话是我对大多数.NET的感受
-
我测试了它,没有发现任何区别。你能发布一个简单的、独立的代码(客户端+服务器)来显示问题吗?