0
我的路由器有一個API,可以通過Telnet進行連接,除此之外還可以控制一個Tellstick。 我正在使用PHP連接到路由器。 我可以執行命令,但是當我試圖使用socket_read
來讀取響應時,我只能看到它的一部分。PHP:socket_read只返回響應的一部分(telnet)
這是連接到使用Windows'telnet功能的路由器時的樣子: http://i.imgur.com/hnIrVQa.png。 對命令ts aliases
的響應長度爲幾行。
當我嘗試通過我的PHP腳本獲得該響應時,我只獲得第一行ALIAS=´Hallway´
。
的代碼我用聽看起來像這樣:
function reply($insocket) {
if (false !== ($bytes = socket_read($insocket, 2048, PHP_BINARY_READ))) {
return " Reply: <code>$bytes</code> \n<br>";
} else {
return "socket_read() failed; reason: " . socket_strerror(socket_last_error($insocket)) . "\n";
}
/*
while ($out = socket_read($insocket, 2048)) {
return $out;
}
*/
}
所有代碼:http://codepad.org/jykGgivv
這聽起來像你期待在一次socket_read()調用中獲取整個消息。使用TCP/IP,流量可能以不可預知的方式分解,並且您可能需要執行幾個socket_read()調用來獲取整個消息。 –