4

しばらくの間、私は Android 2.3 SDK の SipDemo をいじっています。

Android の開発者ページのドキュメントはよくできていますが、それほど多くはありません。IP、ポート、NAT、STUN については何も説明していません。これがどのように機能するかは知っていますが、Android の SIP API がそれをどのように処理するかはわかりません。それとも、NATをまったく処理しますか...

ここで、誰かが API がパブリック IP とポートのテストを行うと述べましたが、私がそれを読んだのは初めてです: http://code.google.com/p/android/issues/detail?id=14043&can=1&q= sip%20ip&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars したがって、これが正しいかどうかはわかりません。少なくとも私にとっては、うまくいきませんでした。

しかし、今私の問題: SipDemo を WiFi に接続されたデバイスまたはエミュレーターにそのまま展開すると、資格情報を提供します (SipDroid や他の SIP アプリで動作することはわかっています)。スニッフィングを行ったところ、SipServer に送信されたパケットにはすべて、NAT のパブリック IP ではなく、デバイスまたはエミュレーターのローカル IP が含まれていることがわかりました。Via: SIP/2.0/UDP 192.168.0.106:53230 のようなもの サーバーは、RFC1918 IP が許可されていないことを正しく応答します。

SipDemo に STUN テストを追加し、パブリック IP とポートを正常に取得しました。しかし、作成した SipProfile または SipManager にそれを渡す方法が見つかりません。

私の質問: NAT の背後で SIP API を使用するアプリケーションを作成したことのある人はいますか? API は NAT をどのように処理しますか? 自分の STUN クライアントから取得した情報を SIP API に渡すにはどうすればよいですか?

私は SipDroid と他の多くの SIP 実装を知っていますが、それらはすべて組み込み API を使用していません。

4

1 に答える 1

0

SipDemo に STUN テストを追加し、パブリック IP とポートを正常に取得しました。しかし、作成した SipProfile または SipManager にそれを渡す方法が見つかりません。

対称 NAT の背後にいる場合は問題ありません。アウトバウンド SIP 接続用に新しい NAT バインディングが作成されるため、STUN で収集した情報は実際には使用できません。

SIP API からの NAT について気にする必要はありません。サーバーは NAT トラバーサル技術を実装する必要があります。

実際にクライアントから何かを行うことができる場合があります: ICE が使用されていて、独自の TURN サーバーを選択する場合ですが、Android はまだ ICE と TRUN のサポートを実装していないと思います。たとえそうなったとしても、TRUNサーバーを展開する必要があります...

そこにある無料のサービスは、NAT トラバーサル技術を実装しています。たとえば、http://sip2sip.infoを試すことができます。

于 2011-10-13T08:56:54.910 に答える