У меня есть два телефона: A и B. A действует как точка доступа Wi-Fi; B подключен к Wi-Fi сети.
Теперь я бы хотел, чтобы А действовал как сервер, а Б - как клиент. Вот суть моего кода:
A выполняет следующие действия (конечно, в своем собственном потоке и в операторах try / catch)
ServerSocket server = new ServerSocket(SERVERPORT);
Socket client = server.accept();
, а затем B делает
Socket socket = new Socket(SERVERIP, SERVERPORT);
SERVERIP всегда один и тот же, когда A активирует свою Wi-Fi AP, поэтому я просто жестко запрограммировал его. (Я проверил это несколькими разными способами.)
Когда B пытается подключиться, я получаю следующее исключение:
java.net.ConnectException: /192.168.43.1:29288 - Network is unreachable
at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:207)
at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
at java.net.Socket.startupSocket(Socket.java:705)
at java.net.Socket.<init>(Socket.java:263)
at disaster.relief.DisasterReliefActivity$ClientThread.run(DisasterReliefActivity.java:288)
at java.lang.Thread.run(Thread.java:1019)
Я пытался использовать один и тот же код, когда два телефона находятся во внешней сети Wi-Fi, и она работает просто отлично. Есть идеи, почему это не сработает?
UPDATE
Я также пытался подключиться к серверу с моего компьютера (когда он подключен к сети Wifi) через telnet, и это прекрасно работает, поэтому проблема должна быть в том, что B создает экземпляр сокета. Я что-то упустил?