2017-02-07 34 views
0

私はXamarin Formsアプリケーションを作成しており、ホストOS(Windows)上で動作するアプリケーションから通信する必要があります。Androidエミュレータと通信するにはどうすればいいですか

ソケットを使用してWindowsからAndroidエミュレータにUDPパケットを送信しようとしましたが、Xamarin Formsアプリはデータを受信しませんでした。

エミュレータとWindowsの間のネットワーク構成は何ですか?他のコミュニケーション手段はありますか?

+1

どのエミュレータを使用していますか? – Cheesebaron

+0

Visual Studio用のXamarin SDKツールに付属のもの。タイトルバーに「Android Emulator-Android_Accelerated_x86:5554」と表示されます。 – ionoy

+0

両方が同じネットワーク上にある場合は、IPアドレスを使用して通信することができます –

答えて

0

私は解決策を発見しました。基本的に、Androidエミュレータには独自のネットワークインターフェイスがないため、必要なポートを転送するにはadbを使用する必要があります。

エミュレータ、使用するTCPポートを転送するには、次のエミュレータ上のポート8500、使用するホスト上のポート8000​​を転送するために、例えば

adb forward tcp:sourceport tcp:destport

adb forward tcp:8000 tcp:8500

UDPポートをリダイレクトするには、エミュレータのポート(通常5554)にtelnetしてからredirを使用します。

telnet localhost 5554 
redir add udp:sourceport:destport 

説明:http://www.iomem.com/archives/23-Redirecting-TCP-and-UDP-traffic-to-the-Android-emulator.html

0

エミュレータ名から、VSエミュレータのようには見えませんが、間違っている可能性があります。

VSエミュレータを使用している場合は、図に示すように、IPとデスクトップマシンのIPを見つけることができます。ここでエミュレータは、WebページがホストWindows上で実行され、通信できることを証明します。

enter image description here

+0

実際には別のエミュレータのようです。ここにスクリーンショットがありますhttp://i.imgur.com/78yyJgT.png – ionoy

+0

IPアドレス10.0.2.15が表示されます。あなたのデスクトップpcのアドレスは何ですか? –

+0

192.168.0.102。しかし、 "10.0.2.15"は実際には物理的なネットワークには存在しないようですが、それはエミュレータ内の偽のアドレスです。エミュレータがリクエストすると、ローカルIPとランダムポートから来ます。 – ionoy

関連する問題