2011-04-11 124 views
2

尝试执行Android和C#之间的套接字通信我似乎被卡住了。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)) 
    { 
    } 
} 

当击中线Socket mySocket = new Socket(serverAddr, 666);在我的Android应用我收到以下错误。

“java.net.ConnectException: 本地主机/ 127.0.0.1:666 - 连接 拒绝”

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

PS:我正在通过模拟器测试这个问题,所以想知道是否可能对我与机器上运行的其他进程进行通信的能力有一些限制?

回答

4

在仿真机器内部,地址127.0.0.1不是主机的回送接口,而是仿真机器自己的回送接口。

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

+0

你是一把枪。发现。我的想法显然已经越过......谢谢! – 2011-04-11 14:38:44

+0

耶,Android的问题点!我知道,将囤积书签储存到我没有编入程序的平台的文档中会在某个时候派上用场:P – 2011-04-11 14:39:59

+0

哈哈,是的,我也是这样做的。经历一个关于平台的热情时刻,研究一下,然后其他的东西就会把你的注意力带走! – 2011-04-11 14:48:16

2

您尝试从Android连接到127.0.0.1的例外详细信息,这意味着您的Android设备。由于服务器套接字位于Windows机器上,因此无法连接。