UDP Adobe air を使用して大きなファイルを CPP に送信しようとしています。大きなファイルの転送中に、いくつかのパケットが欠落しています。不足しているパケットのデータを取得するにはどうすればよいですか? まず、tcp を使用してクライアント (air) とサーバー (cpp) を接続しています。接続確立後、ファイル転送を開始しています。tcp を使用して欠落しているファイルのデータを取得し、欠落しているパケットを tcp を使用して再送信することを計画しています。転送中に欠落しているパケットを知る方法を教えてください。ありがとうございました。
2 に答える
何が起こっているのか明確にしていただけますか?あなたはUDP経由でファイルを送信しているが、TCPでサーバーに接続していると言います.2つのプロトコルは単一の接続では相互に排他的です。
UDP はパケット損失を検出するためのメカニズムを提供しないため (これが TCP の目的です)、デフォルトでは、パケットが損失したかどうかを判断することはできません。TCP はパケットの送信/再送信を管理するため、ファイルの送信には TCP を使用する必要があります。
Air のServerSocket
ドキュメント ( http://help.adobe.com/en_US/air/reference/html/flash/net/ServerSocket.html ) に記載されているとおり:
[TCP 経由で送信された] すべてのパケットは、(妥当な範囲内で) 到着することが保証されます。失われたパケットは再送信されます。一般に、TCP プロトコルは、UDP プロトコルよりも利用可能なネットワーク帯域幅を適切に管理します。ソケット通信を必要とするほとんどの AIR アプリケーションは、DatagramSocket クラス [UDP] ではなく、ServerSocket および Socket クラス [TCP] を使用する必要があります。
Air ネットワーク クラスの詳細については、次のページを参照して
ください。
私の推測では、パケットが失われたときに再送信を行うため、tcp は遅くなります。それがおそらく遅い理由です。しかし一方で、どのパケットが失われたかを確認し、それらをudpで再送信するのにも時間がかかります...
私はUDPの代わりにTCPを選びます
Sly が言うように、udp はここで使用するツールが間違っているようです