У меня есть приложение PHP, которое пытается открыть сокетное соединение с принтером через мой маршрутизатор.
Пара вещей, на которые следует обратить внимание: мне не хватает навыков работы с сетями, поэтому я могу упустить что-то очевидное или это может быть даже невозможно так, как я хочу. При этом я провел кучу поисков по этой проблеме и не могу найти никого с этой точной проблемой (просто многие люди пытаются удаленно подключиться по SSH). Я также знаю, что устройство, к которому я пытаюсь подключиться, работает должным образом, потому что у меня есть небольшое приложение nodejs, которое успешно открывает соединение с ним в локальной сети. И, наконец, я использую Docker для локального запуска приложения PHP, что может иметь отношение к моей проблеме (хотя я знаю, что соединение достигает маршрутизатора из-за журналов).
Код прост:
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_TCP, SO_DEBUG, 1);
$server_connect = socket_connect($socket, "router_public_ip", 9100);
В моем маршрутизаторе я настраиваю этот порт для переадресации:
Когда я пытаюсь подключить PHP, выдает socket_connect(): невозможно подключиться [111]: в соединении отказано
и журналы маршрутизатора показывают, что соединение не удалось.
В журналах маршрутизатора я заметил, что начальный порт является случайным, и попытался изменить конфигурацию переадресации портов на:
Это дает мне тот же результат, и мой маршрутизатор не дает мне много информации для продолжения (почему соединение не удалось, было ли оно заблокировано?). Это все, что показано в логах:
Редактировать:
В меню утилиты настройки принтера ничего не упоминается о брандмауэре или удаленных подключениях.