Я разработчик Android, и часто мои приложения требуют серверного кода. Обычно я использую Ruby on Rails для веб-приложения и во время разработки запускаю сервер на моей локальной машине (Mac OS X) с WEBrick. Утром, когда я доберусь до офиса, я буду запускать ifconfig в консоли, чтобы посмотреть, какой IP получил мой ноутбук в тот день. Я буду использовать этот IP-адрес в своем приложении для Android при запросах к соответствующему веб-приложению.
Это все отлично работает, когда я в своем офисе.
Когда я возвращаюсь домой, я пытаюсь сделать то же самое, найти IP-адрес моего ноутбука через ifconfig, установить его в конфигурационном файле моего приложения, но пункт назначения так и не может быть найден. Чтобы исключить мое приложение из набора препятствий, я пытаюсь зайти на IP-адрес веб-сервера (например, http://192.168.1.4:3000) из браузера моего телефона, и оно не может подключиться. Если я попробую с моего ноутбука, на котором работает веб-сервер, он работает нормально. Если я попробую с другой машины, в той же сети, он также не сможет подключиться.
Учитывая это, я думаю, что я сузил это до некоторой конфигурации в моей домашней сети, но я, честно говоря, понятия не имею, в чем причина. У меня нет ничего особенного дома, ваш базовый маршрутизатор / модем Verizon FiOS со всем, что связано через Wi-Fi (Wi-Fi для телефона и ноутбука на работе, к вашему сведению). Я попытался отключить брандмауэр на своем маршрутизаторе Verizon, включить переадресацию портов и почти все, что я мог сделать для порта 3000, и ничего не изменилось.
Уважаемые гении серверной ошибки, пожалуйста, помогите бедному разработчику. :)
Редактировать:
Некоторые последующие пункты, чтобы добавить. Брандмауэр моего Mac не активен, и все входящие запросы разрешены. Я также проверил на своем телефоне и ноутбуке, что они находятся в одной сети (192.168.1.4 Mac, 192.168.1.9 Phone). Я понятия не имею, почему это не работает.
Изменить 2:
Я вошел в Системные настройки, включил веб-общий доступ и попытался просмотреть веб-сайт со своего телефона, но он не подключился. Так что это не WEBrick и не связано с Rails. Брандмауэр на моем компьютере выключен, а брандмауэр на моем маршрутизаторе выключен.
Изменить 3:
Некоторый прогресс. Я настроил переадресацию портов для порта 3000 на свой ноутбук, нашел внешний IP-адрес и использовал его, и он подключился нормально. Итак, определенно что-то не совсем правильно настроено в моей внутренней сети.