Я делаю приложение, которое позволяет двум устройствам подключаться через сокет. Один из них создает точку доступа и serversocket
, другое устройство может присоединиться к этой точке доступа и подключиться к этому serversocket
.Сокет не будет создан, если данные на
Все работает нормально (на самом деле на устройствах Nougat оно генерирует исключение сети Unreachable, но я решил его с повторением, и это нормально), но IF данные 3g/4g включены, он просто не будет подключаться, это будет застрял (на socket = new Socket(ip,port)
и через некоторое время она бросаетConnectException _ Connection timed out.
Вот полный стек для ошибки:
java.net.ConnectException: Connection timed out
W/System.err: at java.net.PlainSocketImpl.socketConnect(Native Method)
W/System.err: at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
W/System.err: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
W/System.err: at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
W/System.err: at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
W/System.err: at java.net.Socket.connect(Socket.java:586)
W/System.err: at java.net.Socket.connect(Socket.java:535)
W/System.err: at java.net.Socket.<init>(Socket.java:427)
W/System.err: at java.net.Socket.<init>(Socket.java:210)
EDIT: Я знаю, что есть подобные вопросы здесь, но ни один из они связаны с мобильные данные (по крайней мере, я их не нашел), они просто общие.
Когда оба устройства находятся в одной и той же области Wi-Fi, они могут подключаться напрямую, независимо от того, имеет ли сервер публичный IP-адрес или нет. Но если вы подключаете более 3g/4g, то сервер должен иметь глобальный публичный IP-адрес. Есть ли у него? –
Нет, у меня нет ip. Цель состоит в том, чтобы общаться через горячую точку.Таким образом, идеальным сценарием был бы кто-то, кто подключился бы к точке доступа, которая была создана другим устройством, а затем, когда я подключился к этой сети, я получаю IP-адрес сервера из этой сети и пытаюсь создать сокет с этим IP-адресом. –
Тогда ответ @ Vovanrock ниже может быть правильным ответом на ваш вопрос. –