2 android udp localhost android-emulator xamarin.android
我只是尝试在MonodroidApp(AndroidEmulator)和localDevServer之间发送和接收数据.我理解localhost在AndroidEmulator上专门映射到"10.0.2.2",所以我做了以下操作,但应用程序没有响应.
System.Text.Encoding enc = System.Text.Encoding.UTF8;
string sendMsg = "testtest";
byte[] sendBytes = enc.GetBytes(sendMsg);
int localPort = 39000;
var udp = new System.Net.Sockets.UdpClient(localPort);
//send data
string remoteHost = "10.0.2.2";//"127.0.0.1";
int remotePort = 15000;
udp.Send(sendBytes, sendBytes.Length,
remoteHost, remotePort);
//receive data
System.Net.IPEndPoint remoteEP = null;
byte[] rcvBytes = udp.Receive(ref remoteEP);
string rcvMsg = enc.GetString(rcvBytes);
Console.WriteLine("received data:{0}", rcvMsg);
Console.WriteLine("sender address:{0}/port:{1}",
remoteEP.Address, remoteEP.Port);
Run Code Online (Sandbox Code Playgroud)
验证此代码可与Mono for Mac和带有指针的localDevServer一起使用:remoteHost ="127.0.0.1"
所以,
remoteHost ="10.0.2.2"模式不起作用.
我错过了什么?任何人,有什么想法?
谢谢.
小智 10
好吧,我忘记提到的一件重要事情是我用于Android的模拟器是Genymotion.
因此,似乎"10.0.2.2"并未将localhost指向默认值.
http://blog.zeezonline.com/2013/11/access-localhost-from-genymotion/
在我的环境(OSX 10.9)中使用Genymotion,来自模拟器的本地主机地址是
" 10.0.3.2 ",代码有效.