X-Git-Url: http://git.pk910.de/?p=PHP-P10.git;a=blobdiff_plain;f=Uplink%2FClient.class.php;h=a8d946e9beaf7ca7ffd7b7143279aabadcd0d9a0;hp=834448c4ba362fdd67c0b87d328a93b83119e2e0;hb=811bc0c7a1f583fb624a0f8c3601146e063c5a25;hpb=d50b17d7f0ebc21c1c70f2ba513e0973ce9fc789 diff --git a/Uplink/Client.class.php b/Uplink/Client.class.php index 834448c..a8d946e 100644 --- a/Uplink/Client.class.php +++ b/Uplink/Client.class.php @@ -1,22 +1,19 @@ . * * * ************************************************************************ * @@ -24,26 +21,6 @@ * * This file contains the basic Client Socket. * - ************************************************************************ - * accessable methods: - * - * bool connect(String $host, int $port, String $bind = null, bool $ssl = false, int $blocking = 0) - * connects the socket to $host:$port with the provided options - * - * bool connected() - * returns the state of the socket (true if the socket is connected with the server) - * - * String[] recv() - * tries to receive datas from the socket. Returns null or a array containing the lines received. - * this method BLOCKS THE SCRIPT EXECUTION for the defined time if $blocking is set on connect(). - * - * void send(String $line, String $newline = "\r\n") - * tries to send datas through the socket. - * - * Array[] getTraffic() - * returns an array containing the traffic the socket has received and sent. - * index in = incoming (received) traffic count - index out = outgoing (sent) traffic count */ class Client { @@ -51,6 +28,7 @@ class Client { private $socket; private $traffic = array("in" => 0, "out" => 0); + private $timeout; public function connect($host, $port, $bind = null, $ssl = false, $blocking = 0) { if($bind) @@ -60,18 +38,20 @@ class Client { $context = stream_context_create($options); $sock = stream_socket_client(($ssl ? 'ssl://' : '').$host.':'.$port, $errno, $errstr, 3, STREAM_CLIENT_CONNECT, $context); if($sock) { - if($blocking) { - stream_set_blocking($sock, true); - stream_set_timeout($sock, 0, ($blocking / 1000)); - } else { - stream_set_blocking($sock, false); - } + $this->timeout = $blocking * 1000; + stream_set_blocking($sock, false); $this->socket = $sock; return true; } else return false; } + public function disconnect() { + if($this->socket == null) return; + fclose($this->socket); + $this->socket = null; + } + public function connected() { if($this->socket == null) return false; $read = array($this->socket); @@ -89,7 +69,7 @@ class Client { $read = array($this->socket); $write= null; $except=null; - $n=@stream_select($read, $write, $except, 0); + $n=@stream_select($read, $write, $except, 0, $this->timeout); if($n === FALSE || feof($this->socket)) { $this->socket = false; return null; @@ -98,7 +78,7 @@ class Client { while(($line = @fgets($this->socket)) != null) { $line=trim($line); if(!empty($line)) { - if(DEBUG_RAW) echo"[recv] ".$line."\n"; + echo"[recv] ".utf8_decode($line)."\n"; $this->traffic['in'] += strlen($line); $lines[] = $line; if(count($lines) >= self::CLIENT_RECV_MAX_LINES) break; @@ -111,7 +91,7 @@ class Client { public function send($line, $newline = "\r\n") { if($this->socket == null) return; - if(DEBUG_RAW) echo"[send] ".$line."\n"; + echo"[send] ".utf8_decode($line)."\n"; $this->traffic['out'] += strlen($line); fwrite($this->socket,$line.$newline); }