Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/*This file is part of ActiveLink PHP NET Package (www.active-link.com).Copyright (c) 2002-2004 by Zurab DavitianiYou can contact the author of this software via E-mail athattrick@mailcan.comActiveLink PHP NET Package is free software; you can redistribute it and/or modifyit under the terms of the GNU Lesser General Public License as published bythe Free Software Foundation; either version 2.1 of the License, or(at your option) any later version.ActiveLink PHP NET Package is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU Lesser General Public License for more details.You should have received a copy of the GNU Lesser General Public Licensealong with ActiveLink PHP NET Package; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*//*** Socket class provides a basic network socket functionality* @class Socket* @package org.active-link.net* @author Zurab Davitiani* @version 0.4.0*/class Socket {// protected propertiesvar $host;var $port;var $connected;var $connectionID;/*** Constructor, accepts host and port, initializes object* @method Socket* @param host* @param port*/function Socket($host, $port) {$this->host = $host;$this->port = $port;$this->connected = false;}/*** Connects to host with specified settings, accepts connection timeout (optional, default 30)* @method connect* @param optional int connectionTimeout* @returns true if successful, false otherwise*/function connect($connectTimeout = 30) {$this->connectionID = fsockopen($this->host, $this->port, $errorID, $errorDesc, $connectTimeout);if($this->connectionID === false) {return false;}else {$this->connected = true;return true;}}/*** Disconnects if already connected* @method disconnect* @returns true if successful, false otherwise*/function disconnect() {$success = fclose($this->connectionID);if($success)$this->connected = false;return $success;}/*** Receives data through connected socket, accepts chunk size (optional, default 4096)* @method receive* @param optional int chunkSize* @returns string received data if successful, false otherwise*/function receive($chunkSize = 4096) {$receivedString = "";$success = false;if($this->connected) {while(!feof($this->connectionID)) {$receivedString .= fgets($this->connectionID, $chunkSize);}$success = true;}if($success)return $receivedString;elsereturn false;}/*** Sends data through connected socket* @method send* @param string sendString* @returns true if successful, false otherwise*/function send($sendString) {$success = false;if($this->connected)$success = fwrite($this->connectionID, $sendString);return $success;}/*** Combination of send and receive methods in one* @method sendReceive* @param sendString* @param optional int connectionTimeout* @returns string received data if successful, false otherwise*/function sendReceive($sendString, $receiveChunkSize = 4096) {$success = true;$receivedString = "";if($this->connected) {$bytesSent = $this->send($sendString);if($bytesSent === false)$success = false;if($success) {$receivedString = $this->receive($receiveChunkSize);if($receivedString === false)$success = false;}}if($success)return $receivedString;elsereturn false;}/*** Sets host to make a connection to* @method setHost* @param string host* @returns none*/function setHost($host) {$this->host = $host;}/*** Sets port to use for the connection* @method setPort* @param int port* @returns none*/function setPort($port) {$this->port = $port;}}