私は、tcpClientを使用してネットワーク通信用のいくつかのクラスを構築しています。私はtcpserverクラスが接続を受け入れ、バックグラウンドスレッドにシャッフルして、そのポートで接続を受け入れ続けることができます。私は複数のクライアントとサーバーに接続し、サーバーからクライアントへのファイル転送を行うことができます。私の開発マシンでサーバーとクライアントの両方を実行すると、ファイル転送速度が向上しています(160 mbps程度です - 私は大きなパケットサイズを使用しています)。tcpClientを使用したファイル転送の速度が遅い
大きなファイル(> 3ギガバイト)を送信しようとすると、転送の半分ほどが遅くなり、変動するように、奇妙なことに気付きました。 3つのギグ・テスト・ファイル(.iso)を送信しようとすると、2つまたは3つの他のクライアントを使用して大きなファイル(> 500meg)を転送している間も、私の開発マシンで実行していると、.isoの転送は、他のクライアントがファイルの受信を完了した後でも、1メガバイト/秒以下の低速です。それはまた、何の理由もなく、再びスピードアップして30〜80メガ/秒の範囲で変動することがあります。
エラーはなく、コードを嫌っていますが、どこが減速しているのか分かりません。
これはスレッド優先事項ですか?私は、ファイル転送の要素のいくつかを処理するために大きな変数型を使用する必要があります(ファイルサイズのint64、これまでに来たバイト数を記録する別のもの)...私はこれらの変数の値が大きくなると減速しますか?
ご協力いただければ幸いです。
Ok ...クライアントに届いたときにファイルバイトを実際に書き込まないと、これらの問題はまったくありません。実際にバイトをクライアントのファイルに書き込もうとしたときに何かが起きています。私はちょうどFileStreamを使用してバイトの配列を書いています... – Pete