Router
通過 XR300 路由器連接到收據列印機的 PHP 套接字
我有一個 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(): unable to connect [111]: Connection refused
並且路由器日誌顯示連接失敗。我在路由器日誌中註意到啟動埠是隨機的,並嘗試將我的埠轉發配置更改為:
這給了我相同的結果,並且我的路由器沒有給我太多資訊(關於連接失敗的原因,是否被阻止?)。這就是日誌中顯示的全部內容:
然後我想知道列印機網路配置中的 0.0.0.0 網關。
這意味著您的列印機可以直接連接到任何 IP 地址。在正常情況下,系統只能與子網中的其他系統直接通信(見遮罩)。為了更廣泛的覆蓋範圍,它需要通過一個網關。