【问题标题】:UDP from AndroidEmulator (--Genymotion--) to localhost Server(10.0.2.2) does not work?从 AndroidEmulator (--Genymotion--) 到 localhost Server(10.0.2.2) 的 UDP 不起作用?
【发布时间】:2014-01-21 17:06:02
【问题描述】:

我只是尝试在 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);

此代码经验证可与 Mono for Mac 和带有指针的 localDevServer 一起使用:remoteHost = "127.0.0.1"

所以,

remoteHost = "10.0.2.2" 模式不起作用。

我错过了什么?任何人,有什么想法吗?

谢谢。

【问题讨论】:

    标签: android android-emulator udp xamarin.android localhost


    【解决方案1】:

    好的,我忘记提到的一件重要事情是 我用的安卓模拟器是Genymotion。

    所以,“10.0.2.2”似乎没有将 localhost 作为默认值。

    http://blog.zeezonline.com/2013/11/access-localhost-from-genymotion/

    在我使用 Genymotion 的环境(OSX 10.9)中,模拟器的本地主机地址是

    10.0.3.2”,代码就可以了。

    【讨论】:

    • 如果我使用的不是模拟器而是安卓设备怎么办?
    • 链接失效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 2019-11-19
    相关资源
    最近更新 更多