Подключение к TCP-сокету эмулятора Android с другого устройства в той же локальной сетиAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Подключение к TCP-сокету эмулятора Android с другого устройства в той же локальной сети

Сообщение Anonymous »

Я разрабатываю приложение для Android на Kotlin, где у меня есть два экземпляра приложения:
  • В эмуляторе Android студии Android на моем ПК ( win11)
  • На моем телефоне
Оба устройства находятся в одной локальной сети. Я открываю приложение TCP-сокет на порту 2001 на эмуляторе и пытаюсь подключиться к этому сокету из приложения на своем телефоне, используя 192.168.18.16:2001, где 192.168.18.16 > — локальный IP-адрес моего компьютера.
Я настроил переадресацию портов с моего компьютера на эмулятор через abd, используя:

Код: Выделить всё

abd -s emulator-5554 forward tcp:2001 tcp:2001
и я вижу правило, указанное в:

Код: Выделить всё

adb forward --list
Вот соответствующий код Kotlin, который работает на моем телефоне:

Код: Выделить всё

import java.net.Socket

// ...

private val socket: Socket = Socket(ip, port) // ip = "192.168.18.16" and port = 2001
private val outputStream = socket.getOutputStream()
А вот код, который работает на эмуляторе:

Код: Выделить всё

import java.net.ServerSocket

// ...

private val serverSocket = ServerSocket(port) // port = 2001
private val clientSocket: Socket = serverSocket.accept()
private val inputStream = clientSocket.getInputStream()
Теперь самое странное:
Мой телефон блокируется в строке Socket(ip, port), а мой эмулятор блокируется в строке serverSocket.accept(). Пока что это нормально, если предположить, что мой телефон по какой-то причине не может подключиться к компьютеру. Чтобы изолировать проблему, я написал быстрый скрипт Python, который может принимать/создавать TCP-соединения, и мне удалось сделать следующее:
  • Запускал TCP-сервер из Python в 2001 году на моем компьютере и телефоне, подключенном к нему, все в порядке. Вывод: мой компьютер не блокирует мой телефон из-за брандмауэра.
  • Запустил компонент TCP-сервера моего приложения на эмуляторе, использовал Python на своем компьютере в качестве клиента и сумел подключиться к 192.168.18.16:2001. Вывод: переадресация портов adb настроена правильно
Я подозреваю, что эмулятор прослушивает только 127.0.0.1 и не 0.0.0.0, поэтому мой компьютер может связаться с ним, но не мой телефон. Как мне заставить это работать правильно?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -on-the-sa
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как достичь IP устройства в локальной сети от эмулятора Android
    Anonymous » » в форуме Android
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • У меня есть часы, подключенные к моей локальной сети, и у меня есть сервер Windows в локальной сети, и я не могу застави
    Anonymous » » в форуме C#
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Подключиться к сокету из внешней локальной сети
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Я не могу подключиться к своему веб-сокету OpenAi к моему веб-сокету в моем скрипте Twilio?
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как получить адрес IPv6 другого устройства в моей локальной сети? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»