我在写一个简单的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