我有一个问题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);
这让一切变得不同。现在一次通过大约需要 10 毫秒,而 10 次通过则不到 100 毫秒。
为什么???