Я хочу соединить два эмулятора Android (оба работают на одном хосте) с сокетами.
У меня есть сервер, работающий на одном из них и прослушивающий порт 7000 на внешнем IP-адресе:
InetAddress addr = InetAddress.getByName("10.0.2.15");
ServerSocket serverSocket = new ServerSocket(7000, 50, addr);
try {
sock = serverSocket.accept();
} finally {
serverSocket.close();
}
и клиент на другом эмуляторе на том же хосте, подключающемся к этому порту:
socket = new Socket();
socket.bind(new InetSocketAddress("10.0.2.15", 6666));
socket.connect(new InetSocketAddress("10.0.2.2", 7000));
Я привязал клиента к порту 6666, чтобы я мог сделать порт adb необходимо переадресация:
(host) .\adb.exe forward --list
emulator-5554 tcp:7000 tcp:7000
emulator-5556 tcp:6666 tcp:6666
С помощью отладчика я вижу, что клиентский сокет находится в состоянии «соединения», но при вызове:
dataInputStream = new DataInputStream(socket.getInputStream());
dataInputStream.available(); // this throws IOException Broken Pipe
выдается IOException для Broken Pipe.
Есть идеи, где проблема?