0

データ (文字列、数値データ、ドキュメント、画像、音声) を転送する小さなプログラムを作成したいと考えています。TCPは失われたパケットを再送信するのに対し、UDPはパケットが宛先に到達するかどうかをチェックしない(したがって、データを失いやすい)ことを読みました。

クロスオーバー ケーブル イーサレントを介して直接接続された 2 台のコンピューター間でデータを転送すると、(UDP を使用して) 大きなデータ損失の問題が発生しますか? データは数メートルしか移動せず、ルーター/サーバーなどの他のハードウェアを経由しないため、そうではないと思いました。

私はネットワーク プログラミングをほとんど行っていないので、メモリ スティック/FTP/ファイル共有などを使用してデータを転送する代わりに、これは短期間のベンチャーです。

4

2 に答える 2

1

データが失われたパケットを処理できるようには思えないため、データのチェックサムを取り、すべてが通過したことを確認する場合を除き、TCP を使用してください。

パケットが失われる可能性がある場合は、パケットが失われることを計画するか、データが失われることを計画する必要があります。

編集:

距離は間違いなくパケットの損失に影響します。ケーブルが十分に長い場合、100% の損失が発生します。問題は、イーサネットの仕様内にあるケーブルの長さで損失に違いが見られるかどうかです。理論的には、ケーブルが仕様に適合している場合、パケットが失われることはありませんが、これは環境問題を考慮していません. 重大なデータ破損を伴う AC 電源ラインと平行に走る非常に短いケーブル長を持つことができます。

データの損失を受け入れるかどうかのどちらかです。そうでない場合は、おそらく TCP を使用する必要があります。

于 2013-03-05T15:40:43.943 に答える
1

TCP を使用します。完全かつ正確なデータ転送を順番に確実に行うように意図的に設計されています。UDPはそれらのどれでもありません。パケットは、送信元のコンピューター内を含め、パスに沿ったどこでもドロップされる可能性があります。パケットは何らかの理由で並べ替えられる可能性があります。UDP は順序を気にしません。おそらく無視できるのは、データ破損の可能性です。このような直接転送では、このような問題は発生しません。

しかし、真剣に、TCP を使用してください。

于 2013-03-05T22:34:45.863 に答える