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

📄 tcp.php.tmp

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 TMP
字号:
<?php/** * This file contains the code for a TCP transport layer. * * PHP versions 4 and 5 * * LICENSE: This source file is subject to version 2.02 of the PHP license, * that is bundled with this package in the file LICENSE, and is available at * through the world-wide-web at http://www.php.net/license/2_02.txt.  If you * did not receive a copy of the PHP license and are unable to obtain it * through the world-wide-web, please send a note to license@php.net so we can * mail you a copy immediately. * * @category   Web Services * @package    SOAP * @author     Shane Hanna <iordy_at_iordy_dot_com> * @copyright  2003-2005 The PHP Group * @license    http://www.php.net/license/2_02.txt  PHP License 2.02 * @link       http://pear.php.net/package/SOAP */require_once 'SOAP/Base.php';/** * TCP transport for SOAP. * * @todo    use Net_Socket; implement some security scheme; implement support *          for attachments * @access  public * @package SOAP * @author  Shane Hanna <iordy_at_iordy_dot_com> */class SOAP_Transport_TCP extends SOAP_Base_Object{    var $headers = array();    var $urlparts = null;    var $url = '';    var $incoming_payload = '';    var $_userAgent = SOAP_LIBRARY_NAME;    var $encoding = SOAP_DEFAULT_ENCODING;    var $result_encoding = 'UTF-8';    var $result_content_type;    /**     * socket     */    var $socket = null;    /**     * Constructor.     *     * @param string $url  HTTP url to SOAP endpoint.     *     * @access public     */    function SOAP_Transport_TCP($url, $encoding = SOAP_DEFAULT_ENCODING)    {        parent::SOAP_Base_Object('TCP');        $this->urlparts = @parse_url($url);        $this->url = $url;        $this->encoding = $encoding;    }    function _socket_ping()    {        // XXX how do we restart after socket_shutdown?        //if (!$this->socket) {            // Create socket resource.            $this->socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);            if ($this->socket < 0) {                return 0;            }            // Connect.            $result = socket_connect($this->socket, $this->urlparts['host'],                                     $this->urlparts['port']);            if ($result < 0) {                return 0;            }        //}        return 1;    }    /**     * Sends and receives SOAP data.     *     * @param string $msg     Outgoing POST data.     * @param string $action  SOAP Action header data.     *     * @return string|SOAP_Fault     * @access public     */    function send($msg, $options = NULL)    {        $this->incoming_payload = '';        $this->outgoing_payload = $msg;        if (!$this->_validateUrl()) {            return $this->fault;        }        // Check for TCP scheme.        if (strcasecmp($this->urlparts['scheme'], 'TCP') == 0) {            // Check connection.            if (!$this->_socket_ping()) {                return $this->_raiseSoapFault('Error connecting to ' . $this->url . '; reason: ' . socket_strerror(socket_last_error($this->socket)));            }            // Write to the socket.            if (!@socket_write($this->socket, $this->outgoing_payload,                               strlen($this->outgoing_payload))) {                return $this->_raiseSoapFault('Error sending data to ' . $this->url . '; reason: ' . socket_strerror(socket_last_error($this->socket)));            }            // Shutdown writing.            if(!socket_shutdown($this->socket, 1)) {                return $this->_raiseSoapFault('Cannot change socket mode to read.');            }            // Read everything we can.            while ($buf = @socket_read($this->socket, 1024, PHP_BINARY_READ)) {                $this->incoming_payload .= $buf;            }            // Return payload or die.            if ($this->incoming_payload) {                return $this->incoming_payload;            }            return $this->_raiseSoapFault('Error reveiving data from ' . $this->url);        }        return $this->_raiseSoapFault('Invalid url scheme ' . $this->url);    }    /**     * Validates the url data passed to the constructor.     *     * @return boolean     * @access private     */    function _validateUrl()    {        if (!is_array($this->urlparts) ) {            $this->_raiseSoapFault("Unable to parse URL $url");            return false;        }        if (!isset($this->urlparts['host'])) {            $this->_raiseSoapFault("No host in URL $url");            return false;        }        if (!isset($this->urlparts['path']) || !$this->urlparts['path']) {            $this->urlparts['path'] = '/';        }        return true;    }}

⌨️ 快捷键说明

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