Android和C#之间的进程间通信

时间:2011-04-11 14:29:05

标签: c# java android sockets

尝试在Android和C#之间执行套接字通信我似乎陷入困境。

这基本上是我到目前为止的代码。

机器人:

public void onClick(View v) {
    try {
        InetAddress serverAddr = InetAddress.getByName("localhost");
        Socket mySocket = new Socket(serverAddr, 666);
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

C#:

TcpListener listener = new TcpListener(System.Net.IPAddress.Parse("127.0.0.1"), 666);
listener.Start();

using (Socket socket = listener.AcceptSocket())
{
    using (Stream stream = new NetworkStream(socket))
    {
    }
}

在Android应用程序中点击Socket mySocket = new Socket(serverAddr, 666);行时出现以下错误。

  

“java.net.ConnectException:   localhost / 127.0.0.1:666-连接   拒绝“

任何人都可以指导我做错了吗?

PS:我正在通过模拟器对此进行测试,因此想知道是否存在与我在机器上运行的其他进程通信的能力方面的某种限制?

2 个答案:

答案 0 :(得分:4)

在模拟机器内部,地址127.0.0.1不是主机的环回接口,它是模拟机器自己的环回接口。

根据emulator documentation,您可以通过特殊地址10.0.2.2访问主机的环回接口。

答案 1 :(得分:2)

您尝试从Android连接到127.0.0.1的异常详细信息,这表示您的Android设备。由于服务器套接字位于Windows计算机上,因此无法连接。