0

LAN経由で他のクライアントとリアルタイムで通信するアプリケーションがあります。アプリケーションでは、パケットが正常であり、すべてが到着する必要があります。また、可能な限り高速な転送が必要であり、この点でTCPに問題があるようです。

ですから、経験の浅いネットワークプログラマーとして、最初にUDPプロトコルメッセージを送信し、次にTCPで同じデータを送信するとどうなるかを考えていました。UDPメッセージが到着した場合、私は可能な限り速くそれを受け取ります。そうでない場合でも、少なくともパケットを確実に取得するTCPメッセージを持っています。もちろん、各メッセージにIDなどを付けて、同じデータを2回読み取らないようにします。

これは良いアプローチですか?tcpmessageを同時に送信すると、udpメッセージが遅くなるだけなので、とにかく違いはないと思っていました。

4

3 に答える 3

2

いいえ、これは良いアプローチではありません。

ネットワーク帯域幅が2倍になり、ネットワークコードの複雑さが大幅に増し、ほとんど利益が得られません。

TCPとUDPの特性は大きく異なります。データがタイムリーに到着することに関心がある場合、データが遅れても役に立たない場合、TCPは役に立たないため、UDPのみを使用する必要があります。データがタイムリーに到着することを気にしない場合、UDPは信頼できないため、役に立ちません。

于 2012-09-02T11:22:09.013 に答える
1

いいえ、それはまったく良いアプローチではありません。これで、2倍のデータが送信されます。リアルタイム通信の場合、UDPが最良のアプローチです。データの到着を管理し、それをソートし、一部のデータが到着しないように、受信者のアルゴリズムを設計する必要があります。

また、送信されるデータの種類が決定要因になる可能性があります。金融の種類の取引の場合、udpは良い考えではありません。ただし、別のネットワークに接続する必要があります。

ビデオデータの場合、リアルタイムが非常に重要であり、損失は許容できます。

したがって、データのプロパティを使用してudp接続を適切に管理できるかどうかを確認してください。

于 2012-09-02T11:25:39.297 に答える
1

UDPには非常に特殊なユースケースがあります。つまり、プレーヤーの座標を送信するオンラインゲームを言います。順序と確認応答が必要であると述べているため、TCPが最も賢明なアプローチのようです。

ミックスにひねりを加えるだけですが、TCPは時々あなたを驚かせ、特定の状況下でパフォーマンスを向上させることができます。

TCPは、データをネットワーク経由で送信する前にデータをバッファリングしようとします(帯域幅のより効率的な使用)。一方、UDPは、ネットワークを介してパケットをすぐに送信します。

ここで、ネットワーク全体に多数の小さなパケットを書き込むことを想像してください。UDPは輻輳を引き起こす可能性がありますが、TCPはより適切に制御されます。

于 2012-09-02T11:29:03.033 に答える