私は、UDPプロトコルを使ってクライアントとサーバーの間で通信するオンラインゲームを作った。ただし、UDPはコネクションレスなので、クライアントがゲームを終了したか、ネットワークでエラーが発生したかどうかは検出できません。したがって、UDPをコネクション型プロトコルにするか、少なくともネットワークエラーを検出する必要があります。どうすればそれを達成できますか? TCP接続はどのように指向していますか?UDPをコネクション型プロトコルにする?
答えて
まず、私は効率のためにUDPが必要であることを理解していますが、おそらくTCPを試すことができますか?
そうでなければ、私は@Phil Taproggeが述べたようにします。 n秒ごとにサーバーによって識別される特定のUDPパッケージを送信します。サーバーが3 * n秒間それを受信しない場合、クライアントが切断されている可能性が非常に高いです。
私はそれを試して、それは地獄のように遅かった。 – None
これはうまくいかないかもしれないが、これはパッケージのサイズが適切でないことが原因かもしれない。データを収集し、小さいTCPパッケージの代わりに大きなTCPパッケージを送信すると、スループットが向上する可能性があります。 私の次のアイデアは、1つのTCP接続と1つのUDP接続を作ることです。 TCP接続は、クライアントが切断されたことを知る目的のためだけのものです。 – Kev1n91
私はその考えが好きです。それは、コンピュータ間でTCPパケットを送信する機能を追加します。あなたはあなたの答えにこれを加えなければなりません。 – None
あなたが言うように、UDPには接続の概念がありません。 あなたが望むものを達成する唯一の方法は、UDPの上に必要なロジックを自分で実装することです。
たとえば、クライアントは、一意のIDを含むUDPパケットを使用して定期的にサーバーにチェックインすることができます。 サーバーがクライアントからしばらくこのメッセージを受信しない場合は、クライアントが死んだとみなされます。
TCPが接続をどのように処理するのでしょうか? – None
- 1. ビデオUDPプロトコルをストリーミングする
- 2. ffmpegのUDPプロトコルとは何ですか?
- 3. ツイスト共有tcp/udpプロトコル間の変数
- 4. WebカムからのフレームをPythonのudpプロトコルで送信する
- 5. errno 98アドレスがすでに使用中、BokehサーバーとUDPプロトコル
- 6. UDPプロトコルを使ってパケットを連続的に取得する方法は?
- 7. MysqlCommandコネクションをunexpectedlyに切り替える
- 8. どのような異なるTCP/IPプロトコルとUDPプロトコルは、ネットワークプログラミングで通信を行うために
- 9. MonoTouchにNSFastEnumerationプロトコルを実装するObj-C型をバインドする
- 10. これはどのような種類のUDPプロトコルですか?
- 11. DNSがトランスポート層プロトコルとしてUDPを使用する理由は?
- 12. 一般的なWebブラウザでのUDPプロトコルのサポート
- 13. プロトコルで期待される型
- 14. 列挙型でNSCodingプロトコルを使用するには?
- 15. AutoIt UDPプロトコルでヘッダチェックサムエラーが発生するのはなぜですか?
- 16. paramiko:SFTPコネクションを開いて返すメソッド
- 17. スウィフト2のOAuth2 LinkedInのコネクション
- 18. シャットダウン固定TCPコネクション。 (Cマルチスレッドサーバ)
- 19. PHPは、データベースのコネクション機能
- 20. ジェネリック型関連する型のプロトコルを実装する構造体
- 21. UDPパケット:1つのパケットに異なるデータ型を送信するには?
- 22. UDPプロトコル用に複数の再送信タイマーを処理するにはどうすればよいですか?
- 23. アドレスファミリはプロトコルによってサポートされていません。UDP-C
- 24. TCPがコネクション型の場合、なぜパケットは異なるパスに従うのですか?
- 25. そのプロトコルに準拠したクラスの宣言でプロトコル関数の戻り値型を指定する
- 26. where節でのプロトコルのSwift関連型?
- 27. 迅速な型のプロトコルの配列
- 28. 私はUDPプロトコルを介してイベントをトリガするための簡単なHTTPリクエストを送信する必要がUDP
- 29. functionパラメータのプロトコルに関連する型を制限する方法
- 30. ProttyufペイロードをNettyのUDPプロトコルで使用する方法は?カスタムprotobufプロトコルで私にこれの例を教えてください。
接続が必要な場合は、UDPの代わりにTCPを使用するように変更します。 –
私はこれを行うことはできません、私はスピードが必要です。 – None
両方を持つことはできません – OzieGamma