TcpClientを使ってデータの送受信を試みました。私は2つの実験を行い、何か面白いものを見つけました。
日本のサーバーにTcpListenerをセットアップし、英国のサーバーにTcpClientをセットアップしました。TcpListenerに500バイトを送信し続け、TcpListenerが10KBをTcpClientに送り返すとき。この送信/受信ループを各実験で500回維持しました。
実験1:
すべての送受信ループで、新しいTcpClientを作成し(作成直前から時間が刻みます)、送受信します
実験2:
すべてのループで、TcpClientは1つしかなく、TcpListenerとの接続を維持し、500回の送受信を行います。
結果:
1つのループの時間コストの平均値:
E1:1.8秒、E2:0.49秒。
私はこの結果に非常に驚いています。したがって、一定の送受信のために接続を維持することで、多くの時間を節約できますか?ほぼ2/3の時間。
これは本当ですか???
ありがとう
====新しい====
@ Jon Skeet、@ dbemerlin、返信ありがとうございます。Tcpハンドシェイクには時間がかかると思います。
だから私は実験3をしました。
サーバーとしてHttpListenerを設定し、WebClientを使用して送受信します。データサイズはまったく同じです。そして、新しいWebClientを使用して、英国と日本の間で送受信するたびに。
結果は0.86です(500回のループの平均、つまり送信/受信)。
WebClient / HttpLisener自体はTcpだと思いますよね?私の実験では、生のTcpClient / TcpListenerよりもどのように高速になりますか?
再度、感謝します