2

しばらくの間、信頼性を提供する単純な UDP C++ ライブラリを探していました。ドキュメントでNATホールパンチングのサポートが見つからないことを除いて、完璧に見えるENetに出くわしました。インターネット上では数人が議論しているようですが、私はまだそれが可能かどうかについて明確な答えを見つけていません.

クライアントに外部 IP とポートを配布するように構成されたサードパーティ サーバーが既にあります。

可能であれば、誰かがプロセスを説明する疑似コード/手順を提供できますか?

4

3 に答える 3

4

私はこれを理解しました。これが私がしたことです:

  1. 現在のクライアントのホストを作成
  2. サードパーティのサーバーに接続する
  3. 別のクライアントがサードパーティのサーバーに接続すると、他のクライアントの情報が各クライアントに送信されます
  4. ピアのアドレスを受信すると、各ピアは、サーバーへの接続に使用されたのと同じソケットで他のピアへの接続を試み、そのアドレスへのパケットの送信を開始します。これは当初私の問題でした。私はほんの数パケットしか送信していませんでしたが、それらは簡単に失われる可能性がありました. 接続は半分の時間しか機能しません。接続が成功するか失敗するまで、パケットを送信するスレッドを生成することになりました。
  5. いくつかのパケットが送信された後、接続が確立されるはずです
于 2014-07-15T18:31:04.987 に答える
-1

UDP はパケットをドロップする場合があり、パケットを順不同で送信する場合があります。パケットの注文は簡単です。しかし、パケットがドロップされた場合、それを回復する方法はありません。ただし、UDP を行う多くのシステムは、重複データを含む別のストリームを提供します。その場合、セカンダリ ストリームを使用してバックアップを作成し、最初のストリームでドロップされたパケットが 2 番目のストリームで使用可能かどうかを確認して更新することができます。

于 2014-07-08T15:08:33.207 に答える