私は現在、TCP 経由で通信するために 2 つのデバイスを必要とする Android アプリケーションを開発しています (UDP が出ているので、静かにパケットを失うことはできません)。通信をできるだけ高速にする必要があります (つまり、許容可能な待機時間のしきい値が低い) が、接続の寿命は短くなります (おそらく 2 分未満)。電話は接続し、自分のことを行い、接続を閉じます。
NAT ホール パンチングに関してかなりの調査を行いましたが、Java および Android 用に実装された信頼性の高い tcp ホール パンチング メソッドはないようです。したがって、私の唯一の選択肢は、2 つのデバイス間の TCP 通信を「プロキシ」するサーバー アプリケーションを開発することです。
2 つの質問があります。
1) 車輪を再発明したくありません: 使用できる単純な tcp プロキシは既に作成されていますか? (注: あらゆる種類の http プロキシではありません。低レイテンシーが必要なため、デバイス上の 2 つの tcp ソケット接続間で非常に小さなペイロードを渡したいだけです)。サーバーの唯一の目的は、NAT の問題を回避することです。
2) そうでない場合、このような経験をしたことがある人はいますか? 私は、Java NIO や、接続ごとに新しいスレッドを作成するサーバーのアイデアをいじりました (問題は、適切な「クライアント」スレッドをリンクして情報をやり取りする方法です)。それとも、Java はサーバー側で使用するのに最適な言語でさえありますか?
Google のチャット サービスを介して XMPP を使用するための推奨事項をいくつか読みましたが (こちらを参照)、XMPP のオーバーヘッドは必要ありません。
方向性や提案は大歓迎です。