- В эмуляторе Android студии Android на моем ПК ( win11)
- На моем телефоне
Я настроил переадресацию портов с моего компьютера на эмулятор через abd, используя:
Код: Выделить всё
abd -s emulator-5554 forward tcp:2001 tcp:2001
Код: Выделить всё
adb forward --list
Код: Выделить всё
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 настроена правильно
Подробнее здесь: https://stackoverflow.com/questions/790 ... -on-the-sa