0

Wi-Fi経由でテキストメッセージを送受信するAndroidアプリを開発しています。この通信にはTCPソケット(IPアドレスとランダムポート)を使用しますが、問題は、ルーターの「ポート転送セクション」からこれらのポート番号を許可しないと、メッセージを送信できないことです。この問題を取り除く方法はありますか?

4

2 に答える 2

0

両方のクライアントが異なる制限付きファイアウォールの背後にある場合は、両方のクライアントが 3 番目のサーバーとの接続を開くホールパンチングを調べる必要があります。3 番目のサーバーは、NAT で開かれたポートを予測します: Java を使用した NAT トラバーサルhttps://stackoverflow.com /questions/917385/nat-traversal-with-java/ . ここで説明するように、これは通常、P2P アプリケーション (つまり、クライアントからクライアントへ) に必要であることに注意してください。はい、それは恐ろしく複雑で厄介です:(

Amazon Cloud Services のようなものを使用してメッセージをクラウドに保存し、プッシュベースのメカニズムを使用して、おそらくロング ポーリング HTTP を使用して、メッセージの受信時に相手に通知する方がよい場合があります。

于 2012-05-10T20:29:06.913 に答える
0

選択した範囲内からランダムにポートを選択し、ルーターでその範囲を次のように転送できます。

int ポート = (Math.abs(random.nextInt())) % 3000 + 1024;

このようにして、1024 から 2999 の間の乱数を生成しました。または、固定ポートを選択します。

于 2012-05-10T20:14:36.567 に答える