2009-04-28 6 views
0

私は数日後にudpを学んでいます。今週末、私はその72時間の競争に参加する予定で、私は自分のUDPコードをその最後までオンラインにしたいと思っています。競争の間、私はインターネットを持っていません(だから、誰かを呼んでいないし、テストしています)。LANの外でUDPコードをテストするのに問題がありますか?

UDPのようなパケットが2回入ってきて、何フレームも入ってこないという問題があることは知っていますが(ミリ秒でどれくらいの時間がかかるかわかりません)、推奨バイトサイズ(576) What should i know about UDP programming?

しかし、LANからインターネットに移行した後に起こることは何ですか?

注:私はできるだけ早くコードを実行し、オンラインでテストします。うまくいけば、私の終了コードはどのように見えるだろうが、私はまたいくつかのことを逃すかもしれない。

+0

576は推奨されていません。断片化のないすべてのIPv4ネットワークでサポートされている最低限のサイズです。 IPv6はこれを1,500バイトに増やします。 –

答えて

0

遅延が増え、パケット損失が増える可能性があります。これは、送信機と受信機の位置に依存します。あなたが米国にいる場合、オーストラリアとUDPと通信しようとすると、旅行までの距離が長くパケットの経路が増えるため、パケット損失/並べ替えられたパケット/複製の被害がかなり高くなりますルーティングされる。

0

トランスポートプロトコルとしてUDPを使用している場合は、アプリケーションプロトコル内で送信を保護する必要があります。これを行うには、いくつかの方法があります。

  • パケットシーケンス番号が
  • パケットはサイズ
  • チェックサム

あなたはあなたのアプリケーションパケットのヘッダとして、これらを送信し、受信側でそれらを確認する必要があります。

PS:プロトコルの一部だけでなく、プロトコルのあらゆる面で正しいパケットの順序と完全性に本当に頼っているのであれば、TCPに切り替える必要があります。

+1

あなたの送信を保護したいかもしれないと言います。たとえば、指標の目的でリアルタイムの価格更新を受け取っている場合は、パケットミスの可能性があります。 –

+0

あなたはそうです。だから私はPSを追加した。 – Koraktor

0

これは少し極端な(!)かもしれませんが、これが重要な場合は、受信データグラムをリッスンして転送するUDPプロキシを書き込むことができます。その後、提供するために、これを修正することができます:

  1. レイテンシー
  2. パケット
  3. パケット複製

をドロップし、プロキシにデータを送信するために、クライアント、および(とに指示するためにプロキシに指示します適切なパケット変更)をサーバーに送信します。

私が言うように、おそらく極端です。 しかし、は、LAN /インターネットの存在下であっても、これを使用してアプリケーションがUDP非友好的な環境で動作するかどうかをテストできます。

編集:確かに誰かがこのようなことを書いていますか?もしそうでなければ、私はオープンソースのプロジェクトが来るのを感じます....

0

短い答えは:LAN上では、おそらくUDPのトレードオフ(良い点と悪い点)いくつかのことが間違ってくることがあります

パケットが失われる可能性があります。LANの輻輳またはローカルシステムの制限が原因です。

ルータを使用している場合、LANに依存すると、断片化、重複パケット、遅延パケット、特定のサイズを超えるパケットの破棄、エラーメッセージの返されないUDP問題の大半が表示されます。

つまり、UDPを複雑にするもののほとんどは、「LANを離れる」ことです。

+0

断片化はどういう意味ですか?私はパケットの半分を得ますか?私は別の読書の後半になるのだろうか? –

関連する問題