从AndroidEmulator( - Genymotion--)到localhost服务器(10.0.2.2)的UDP不起作用?

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 ",代码有效.