我尝试使用 TcpClient 发送/接收数据。我做了两个实验,发现了一些有趣的东西。
我在日本的服务器和英国的 TcpClient 中设置了 TcpListener。我一直向 TcpListener 发送 500 个字节,当 TcpListener 将 10KB 发送回 TcpClient 时。我在每个实验中保持这个发送/接收循环 500 次。
实验一:
在每个发送/接收循环中,我创建一个全新的 TcpClient(从创建之前开始计时)并发送/接收
实验二:
对于所有循环,我只有一个 TcpClient,它保持与 TcpListener 的连接并进行 500 次发送/接收。
结果:
一个循环的时间成本的平均值:
E1:1.8 秒,E2:0.49 秒。
我对这个结果感到非常惊讶。所以保持连接以持续发送/接收可以节省很多时间???将近 2/3 的时间。
这是真的???
谢谢
====新====
@Jon Skeet,@dbemerlin,感谢您的回复。我猜想 Tcp 握手需要一些时间工具。
所以我做了实验3。
我将 HttpListener 设置为服务器并使用 WebClient 发送/接收,数据大小完全相同。每次我使用新的 WebClient 在英国和日本之间发送/接收时。
结果为 0.86(500 次循环的平均值,即发送/接收)。
我假设 WebClient / HttpLisener 本身就是 Tcp,对吧?在我的实验中,它们如何比原始 TcpClient/TcpListener 更快?
再次感谢