UDP データグラムを介して (localhost で) ファイルを送受信しています。受信したパケットを組み立てて、受信したファイルを作成し、パス (デスクトップなど) に保存したいと考えています。どうすればよいですか? 何か案が?
ここで私のクライアント/サーバーの実装を見つけることができます:
同じポートでの送受信に UDPSocket を 1 つだけ使用することは可能ですか?
ありがとう!
UDP データグラムを介して (localhost で) ファイルを送受信しています。受信したパケットを組み立てて、受信したファイルを作成し、パス (デスクトップなど) に保存したいと考えています。どうすればよいですか? 何か案が?
ここで私のクライアント/サーバーの実装を見つけることができます:
同じポートでの送受信に UDPSocket を 1 つだけ使用することは可能ですか?
ありがとう!
あなたがしなければならないのは、TCPのようなアルゴリズムです。TCP プロトコルのような UDP 上のプロトコルを作成します。
1) UDP パケットの順序付けが必要です 2) UDP には既にあるため、カスタム チェックサムは必要ありません 3) 送信者側のバッファー。コードはバッファーに書き込み、プロトコルはデータをバッファーから受信者に一定の長さのパケット (MTU サイズ) として送信します。 UDP パケットで約 1400 バイト)。パケットにはシーケンス番号があります。4) 受信パケットの受信側は、seq をチェックします。パケットのシーケンス番号を受信した場合。ファイルに書き込むためにバッファできます。それ以外の場合は、このパケットを一時バッファに入れ、送信者に失われたパケットの情報を送り返します。5) 受信者は、最高の受信シーケンス番号または失われたシーケンス番号の ACK を送り返します。6) 送信側は、受信側からの返信に従って実行します。
私はあなたがいくつかの考えを持っていると思います。マルチスレッドが必要です..各マシンには、このようなアルゴリズムを実装するための送信者、受信者、アプリケーションスレッドが必要です。
ところで、私はこのアルゴリズムを実装し、素晴らしい結果を得ました。約 100 ~ 200 ミリ秒の往復時間で、100 Mbps のインターネット接続で TCP が 5 Mbps を超えるピーク速度に失敗していた 75 Mbps の速度でファイルを転送できます。インドからカナダへ。
これがお役に立てば幸いです。