すべてのサイズのファイルを転送するために、VB.NETで単純なTCPクライアント/サーバーをコーディングしています。System.Net.SocketsのコマンドSendFileを使用して、ソケットを介してバイトを転送することにしました。
受信側では、バイトを取得するためのコードはかなりうまく機能しますが、転送がランダムに停止することがあります。
次のデータブロックの取得の間にわずかなスリープ遅延を設けることで、転送が100%安定することがわかりました。
(利用可能なデータがなくなるまで)データを取得するための私のコードは、次のように簡略化されています。
While newSocket.Available > 0
Threading.Thread.Sleep(100)
newSocket.ReceiveFrom(data, Remote)
End While
私はそのスリープ遅延を使用するのが本当に嫌いで、SendFileからデータを取得するための適切なメソッド/関数が必要だと思いますか?