我在寫一個簡單的telnet客戶端庫。我使用fsockopen()打開套接字並使用fgetc()和fwrite()讀取和寫入套接字。我使用fgetc()而不是fread()來處理Telnet特殊命令和選項,如(IAC,...)。讀取從PHP中的套接字接收的所有數據
問題是,我正在從套接字讀取大部分時間,它需要很長時間才能返回。正如我所描述的那樣,只要連接超時,然後我就會得到結果。
這裏是我的閱讀方法:
protected function getChar()
{
$char = fgetc($this->_socket);
return $char;
} // public function getChar()
目前我用這個條件來確保流結束:
$char = $this->getChar();
if ($char === false) {
// end of the stream.
}
是那裏流結束的以找出任何其他方式所有數據都被讀取?
更新:我認爲Telnet協議中的EOF字符不是PHP期望的EOF,這就是爲什麼腳本無法找到流結束的原因。有誰知道Telnet協議中的EOF(文件結束)字符是什麼?
Telnet會話是全雙工還是半雙工? – 2009-06-10 06:27:33
我不確定。我怎麼知道? – farzad 2009-06-10 17:17:35