2016-09-04 10 views
2

私は、UDPプロトコルを使ってクライアントとサーバーの間で通信するオンラインゲームを作った。ただし、UDPはコネクションレスなので、クライアントがゲームを終了したか、ネットワークでエラーが発生したかどうかは検出できません。したがって、UDPをコネクション型プロトコルにするか、少なくともネットワークエラーを検出する必要があります。どうすればそれを達成できますか? TCP接続はどのように指向していますか?UDPをコネクション型プロトコルにする?

+0

接続が必要な場合は、UDPの代わりにTCPを使用するように変更します。 –

+1

私はこれを行うことはできません、私はスピードが必要です。 – None

+0

両方を持つことはできません – OzieGamma

答えて

1

まず、私は効率のためにUDPが必要であることを理解していますが、おそらくTCPを試すことができますか?

そうでなければ、私は@Phil Taproggeが述べたようにします。 n秒ごとにサーバーによって識別される特定のUDPパッケージを送信します。サーバーが3 * n秒間それを受信しない場合、クライアントが切断されている可能性が非常に高いです。

+1

私はそれを試して、それは地獄のように遅かった。 – None

+0

これはうまくいかないかもしれないが、これはパッケージのサイズが適切でないことが原因かもしれない。データを収集し、小さいTCPパッケージの代わりに大きなTCPパッケージを送信すると、スループットが向上する可能性があります。 私の次のアイデアは、1つのTCP接続と1つのUDP接続を作ることです。 TCP接続は、クライアントが切断されたことを知る目的のためだけのものです。 – Kev1n91

+1

私はその考えが好きです。それは、コンピュータ間でTCPパケットを送信する機能を追加します。あなたはあなたの答えにこれを加えなければなりません。 – None

2

あなたが言うように、UDPには接続の概念がありません。 あなたが望むものを達成する唯一の方法は、UDPの上に必要なロジックを自分で実装することです。

たとえば、クライアントは、一意のIDを含むUDPパケットを使用して定期的にサーバーにチェックインすることができます。 サーバーがクライアントからしばらくこのメッセージを受信しない場合は、クライアントが死んだとみなされます。

+1

TCPが接続をどのように処理するのでしょうか? – None

関連する問題