⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socket.php.svn-base

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 SVN-BASE
字号:
<?php/** *  base include file for SimpleTest *  @package    SimpleTest *  @subpackage MockObjects *  @version    $Id: socket.php 1723 2008-04-08 00:34:10Z lastcraft $ *//**#@+ * include SimpleTest files */require_once(dirname(__FILE__) . '/compatibility.php');/**#@-*//** *    Stashes an error for later. Useful for constructors *    until PHP gets exceptions. *    @package SimpleTest *    @subpackage WebTester */class SimpleStickyError {    var $_error = 'Constructor not chained';    /**     *    Sets the error to empty.     *    @access public     */    function SimpleStickyError() {        $this->_clearError();    }    /**     *    Test for an outstanding error.     *    @return boolean           True if there is an error.     *    @access public     */    function isError() {        return ($this->_error != '');    }    /**     *    Accessor for an outstanding error.     *    @return string     Empty string if no error otherwise     *                       the error message.     *    @access public     */    function getError() {        return $this->_error;    }    /**     *    Sets the internal error.     *    @param string       Error message to stash.     *    @access protected     */    function _setError($error) {        $this->_error = $error;    }    /**     *    Resets the error state to no error.     *    @access protected     */    function _clearError() {        $this->_setError('');    }}/** *    Wrapper for TCP/IP socket. *    @package SimpleTest *    @subpackage WebTester */class SimpleSocket extends SimpleStickyError {    var $_handle;    var $_is_open = false;    var $_sent = '';    var $lock_size;    /**     *    Opens a socket for reading and writing.     *    @param string $host          Hostname to send request to.     *    @param integer $port         Port on remote machine to open.     *    @param integer $timeout      Connection timeout in seconds.     *    @param integer $block_size   Size of chunk to read.     *    @access public     */    function SimpleSocket($host, $port, $timeout, $block_size = 255) {        $this->SimpleStickyError();        if (! ($this->_handle = $this->_openSocket($host, $port, $error_number, $error, $timeout))) {            $this->_setError("Cannot open [$host:$port] with [$error] within [$timeout] seconds");            return;        }        $this->_is_open = true;        $this->_block_size = $block_size;        SimpleTestCompatibility::setTimeout($this->_handle, $timeout);    }    /**     *    Writes some data to the socket and saves alocal copy.     *    @param string $message       String to send to socket.     *    @return boolean              True if successful.     *    @access public     */    function write($message) {        if ($this->isError() || ! $this->isOpen()) {            return false;        }        $count = fwrite($this->_handle, $message);        if (! $count) {            if ($count === false) {                $this->_setError('Cannot write to socket');                $this->close();            }            return false;        }        fflush($this->_handle);        $this->_sent .= $message;        return true;    }    /**     *    Reads data from the socket. The error suppresion     *    is a workaround for PHP4 always throwing a warning     *    with a secure socket.     *    @return integer/boolean           Incoming bytes. False     *                                     on error.     *    @access public     */    function read() {        if ($this->isError() || ! $this->isOpen()) {            return false;        }        $raw = @fread($this->_handle, $this->_block_size);        if ($raw === false) {            $this->_setError('Cannot read from socket');            $this->close();        }        return $raw;    }    /**     *    Accessor for socket open state.     *    @return boolean           True if open.     *    @access public     */    function isOpen() {        return $this->_is_open;    }    /**     *    Closes the socket preventing further reads.     *    Cannot be reopened once closed.     *    @return boolean           True if successful.     *    @access public     */    function close() {        $this->_is_open = false;        return fclose($this->_handle);    }    /**     *    Accessor for content so far.     *    @return string        Bytes sent only.     *    @access public     */    function getSent() {        return $this->_sent;    }    /**     *    Actually opens the low level socket.     *    @param string $host          Host to connect to.     *    @param integer $port         Port on host.     *    @param integer $error_number Recipient of error code.     *    @param string $error         Recipoent of error message.     *    @param integer $timeout      Maximum time to wait for connection.     *    @access protected     */    function _openSocket($host, $port, &$error_number, &$error, $timeout) {        return @fsockopen($host, $port, $error_number, $error, $timeout);    }}/** *    Wrapper for TCP/IP socket over TLS. *    @package SimpleTest *    @subpackage WebTester */class SimpleSecureSocket extends SimpleSocket {    /**     *    Opens a secure socket for reading and writing.     *    @param string $host      Hostname to send request to.     *    @param integer $port     Port on remote machine to open.     *    @param integer $timeout  Connection timeout in seconds.     *    @access public     */    function SimpleSecureSocket($host, $port, $timeout) {        $this->SimpleSocket($host, $port, $timeout);    }    /**     *    Actually opens the low level socket.     *    @param string $host          Host to connect to.     *    @param integer $port         Port on host.     *    @param integer $error_number Recipient of error code.     *    @param string $error         Recipient of error message.     *    @param integer $timeout      Maximum time to wait for connection.     *    @access protected     */    function _openSocket($host, $port, &$error_number, &$error, $timeout) {        return parent::_openSocket("tls://$host", $port, $error_number, $error, $timeout);    }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -