2011-01-25 4 views
0

モバイルデバイスからかなり大きなHTTPリクエストを送信する必要があります。要求が失われた状況(送信されたデータを再送信する必要があるため)HTTPリクエストはいつ失われますか?

たとえば、数秒間無線接続がない場合はどうなりますか?私は制御できないネットワークのいくつかの決定に依存していますか?

サーバーにタイムアウトはありません。私はクライアントを制御し、安定していると見なすことができます。 呼び出しはいくつかのCurlライブラリ(POSIX C++、組み込みLinux)に入りますが、どれだけ変更できるかは限られています。

答えて

0

いくつかの要求が失われる状況:

  • パワーをモバイルユニットに失われ
  • 移動ユニットは正味(電波が宛先に到達できない)
  • プログラミングエラーとの接触を失いモバイルデバイスで/メモリフォルトが発生する
  • 同時に多くのモバイルデバイスが同時にデータを送信しようとしています
  • 無線リンクの外部干渉
  • パワーがネットワークインフラストラクチャに誤って労働者
  • 火災、洪水、地震などでカット
  • ケーブル...

を失った。そして、すべての問題は、メモリのうちのように、サーバー側であります要求のタイムアウトなど...

可能であれば、より小さなセグメントで情報を分割してみてください。何かがうまくいかないと、再送信する必要のある情報が少なくなります。 2011-01-27更新


を私が間違って行くとif anything can go wrong, it willことができ、あまりにも多くのものがあることを言うとき、私は少し悲観的に聞こえるかもしれません。

送信側では、サーバーが何らかの確認応答を送信した場合、送信が成功したかどうかを確認するのは非常に簡単です。転送要求の応答として送信することも、別のクエリで送信することもできます。

サーバー側で何を使用しているかによって、接続が失われたかどうかを検出できます(その要求のすべてのデータも失われている可能性があります)。私の意見は、送信が成功したかどうかを確認し、送信されていない場合は再送信する責任が送信者にあるということです。

あなたはどのような種類のデータを持っているのかよくわかりませんが、それを小さな塊に分割することは可能です。しかし、それが望ましいかどうかは決めることができません。しかし、モバイルデバイスを持ち、データの転送に時間がかかる場合は、おそらくそうです。

+0

メッセージを分割するのは難しいので、いつ転送が失われたのか、それについて何ができるのかを理解しようとしています。 – Olav

0

「いくらか」と言ったように、アップロードを分割して番号を付け、もう一方の端に再アセンブルする必要があります。私はかつてこれを行うウェブサービスを書いたので、クライアントは正しいチェックサム(例えばSHA-1ハッシュ)で特定の部分が受け取られたという確認を得るでしょう。

タイムアウトが原因で確認が行われないか、ハッシュが一致しない場合、クライアントはその部分を再送信する必要があります。私は、期待されるネットワーク速度(遅いネットワークの小さなチャンク)に応じて、各チャンクを1〜10 kbのように小さくするようにアドバイスします。

関連する問題