public function read($length)
{
$read = 0;
$parts = '';
while ($read < $length && !$this->_wrapper()->feof($this->_socket)) {
$data = $this->_wrapper()->fread($this->_socket, $length - $read);
if ($data === false) {
throw new Exception\SocketException('fread() returned false');
}
$read += strlen($data);
$parts .= $data;
}
return $parts;
}