간단한 텔넷 클라이언트 라이브러리를 작성하고 있습니다. 나는 fsockopen()을 사용하여 소켓을 열고 fgetc()와 fwrite()를 사용하여 소켓을 읽고 쓴다. 필자는 fread() 대신 fgetc()를 사용하여 Telnet 특수 명령과 (IAC, ...)와 같은 옵션을 처리합니다.PHP의 소켓에서받은 모든 데이터를 읽으십시오.
문제는 대부분 소켓에서 읽는 중입니다. 반환하는 데 너무 오래 걸립니다. 프로파일을 작성 했으므로 연결 시간이 끝나면 결과가 나타납니다.
$char = $this->getChar();
if ($char === false) {
// end of the stream.
}
스트림이 완료되는 것을 알아내는 다른 방법이 :
protected function getChar()
{
$char = fgetc($this->_socket);
return $char;
} // public function getChar()
현재 나는 확실히 스트림을 완료하기 위해이 조건을 사용 : 여기
는 내 독서 방법입니다 모든 데이터를 읽었습니까?Udate : 텔넷 프로토콜의 EOF 문자는 PHP가 EOF로 기대하는 것이 아니므로 스크립트가 스트림의 끝을 찾을 수없는 이유입니다. 누구든지 텔넷 프로토콜에서 EOF (파일 끝) 문자가 무엇인지 알고 있습니까?
텔넷 세션은 전이중 또는 반이중입니까? –
잘 모르겠습니다. 어떻게 알 수 있습니까? – farzad