Я пишу простую клиентскую библиотеку telnet. Я открываю сокеты с помощью fsockopen () и читаю и пишу в сокет с помощью fgetc () и fwrite (). Я использую fgetc () вместо fread () для обработки специальных команд и опций Telnet, таких как (IAC, ...).
проблема в том, что большую часть времени я читаю из сокета, возвращение занимает слишком много времени. как я его описал, это займет столько времени, сколько истекло время ожидания соединения, и после этого у меня будут результаты.
вот мой метод чтения:
protected function getChar()
{
$char = fgetc( $this->_socket );
return $char;
} // public function getChar()
В настоящее время я использую это условие, чтобы убедиться, что поток завершен:
$char = $this->getChar();
if ( $char === false ) {
// end of the stream.
}
Есть ли другой способ узнать, что поток завершен и все данные прочитаны?
Udate: Я думаю, что символ EOF в протоколе Telnet - это не то, что PHP ожидает как EOF, и поэтому сценарий не может найти конец потока. Кто-нибудь знает, что такое символ EOF (конец файла) в протоколе Telnet?