2011-04-11 139 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機器上,因此無法連接。