Установление соединения между Java-сервером и клиентом в Android AppEDIT - PullRequest
0 голосов
/ 18 мая 2011

У меня есть приложение на Android, в котором я создал клиент Android и сервер Java.

Но я сталкиваюсь со следующей проблемой: мой клиент (часть Android) подключается к локальной машине через порт6000, используя адрес обратной связи android.

Мой сервер (на Java) прослушивает локальную машину через порт 6000 - но какой IP-адрес я должен использовать для получения сокета, который принимает клиентов?

InetSocketAddress serverAddr = new InetSocketAddress(SERVERIP,serverPort);
serverSocket = new ServerSocket();
serverSocket.bind(serverAddr);

Так какой же SERVERIP я должен использовать?

ОБНОВЛЕНИЕ: Мой клиент работает на эмуляторе !!!!!

РЕДАКТИРОВАТЬ:

открытый классClientThread реализует Runnable {Object syncToken;

    public ClientThread(Object syncToken) {
        this.syncToken = syncToken;
    }

    public void run() {
        try {
            InetAddress serverAddr = InetAddress.getByName(serverIpAddress);

            socket = new Socket(serverAddr, 50458);


        } catch (UnknownHostException e) {
            System.err.println("Don't know about host");
        } catch (IOException e) {
            System.err
                    .println("Couldn't get I/O for the connection to host");
        }

        try {
            out = new PrintStream(socket.getOutputStream());
        } catch (IOException e) {

            System.out.println(e);
        }

        while (true) {
            synchronized (syncToken) {
                try {
                    syncToken.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        }

    }
}

А вот это: private String serverIpAddress = "10.0.2.2"; !!!!!

Ответы [ 3 ]

2 голосов
/ 18 мая 2011

С http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking: Если вы хотите общаться из эмулятора с локальным хостом, используйте IP 127.0.0.1 на локальном хосте и IP 10.0.2.2 в Android.Это должно позволить вам общаться между клиентом Android и локальным хост-сервером.

0 голосов
/ 18 мая 2011

Для serverAddr используйте конструктор #InetSocketAddress(int port), он задает подстановочный адрес и определенный порт, что означает, что он прослушивает все интерфейсы машины.

Редактировать: для достижения наилучших результатов на устройстве Android используйте DNS-имя сервера для подключения к нему.

0 голосов
/ 18 мая 2011

Вы хотите запустить серверную часть на Android? Я полагаю, что нет, и в таком случае использование адреса обратной связи не будет работать, поскольку интерфейс обратной связи в системе Android возвращается к самой машине Android, он не направляется наружу.

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