c# - Android与C#之间的进程间通信

标签 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 - Connection refused"

任何人都可以指导我,我做错了什么?

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

最佳答案

在仿真机内部,地址 127.0.0.1 不是主机的环回接口(interface),而是仿真机自己的环回接口(interface)。

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

关于c# - Android与C#之间的进程间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5622787/

相关文章:

c# - WPF - 具有多重绑定(bind)的工具提示

c# - 使用C#将一些数据插入到多个表中

java - 使用 MockMVC 测试 Spring MVC 路由器

android - 通知操作按钮外观

java - 以编程方式维护全屏

c# - 在 CSharpCompilation .net Core 中未获取命名空间/引用

java - 有没有办法在Spring-Boot java应用程序中使用host-IP作为主机远程连接到redis服务器

java - 我应该在类实现中使用 getter 和 setter 吗?

java - 没有应用程序可以执行此操作 android studio

c# - 如何通过 Google 方式找出可能的中间人?