Межпроцессное взаимодействие между Android и C # - PullRequest
2 голосов
/ 11 апреля 2011

Попытка установить сокетную связь между Android и C # Кажется, я застрял.

Это в основном код, который у меня есть.

Android:

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: localhost / 127.0.0.1: 666 - соединение отказался "

Кто-нибудь может подсказать мне, что я делаю неправильно?

PS: я тестирую это через эмулятор, поэтому мне интересно, есть ли какие-то ограничения в моей способности общаться с другими процессами, запущенными на машине?

Ответы [ 2 ]

4 голосов
/ 11 апреля 2011

Внутри эмулируемой машины адрес 127.0.0.1 не является интерфейсом обратной связи хоста, это собственный интерфейс обратной связи эмулируемой машины.

Согласно документации эмулятора вы можете получить доступ к обратной петле хостаинтерфейс через специальный адрес 10.0.2.2.

2 голосов
/ 11 апреля 2011

Сведения об исключении, которые вы пытались подключить к 127.0.0.1 с Android, это означает ваше устройство Android. Поскольку сокет сервера находится на вашем компьютере с Windows, он не может подключиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...