Belajar membuat applikasi socket Dengan PHP

Tuesday, May 31, 2016


Disini saya punya dua file pertama untuk di sisi server dan yang kedua di sisi Client , berikut ini untuk script disisi server :

--StartPHP--

class server_socket{            
    var $host;      
    var $port;        
    var $buffer;      
    var $connected;        
    var $bind_result;      
    var $lstn_result;        
    var $newSocket;        
    var $to_client;        
    var $from_client;        
    var $writeLen;                
   
    function __construct($host="127.0.0.1",$port=9001,$max=0){            
        $this->host      = $host;          
        $this->port      = $port;            
        $this->buffer    = 1024;            
        $this->connected = false;            
        echo " Start listening... \n\r";            
        $this->server_created_socket();        
    }                
   
    public function server_created_socket(){            
        set_time_limit(0);            
        $this->connected = socket_create(AF_INET,SOCK_STREAM,0) or die("Could not create a socket");            
        if($this->connected){                
            $this->bind_result= socket_bind($this->connected,$this->host,$this->port) or die('could not bind to port');                
                if($this->bind_result){
                    $this->lstn_result= socket_listen($this->connected,3) or die('unable to listen');
                    $this->open_listening();
                }
        }
        else{
            self::__construct();
        }
    }
   
    private function listen_loop(){
            $this->newSocket    = socket_accept($this->connected);            
            if($this->newSocket) return true;          
            else return false;        
    }
   
    public function open_listening(){
        $this->listen_loop();
        $this->from_client  = socket_read($this->newSocket,$this->buffer);          
        $this->from_client  = trim($this->from_client);        
        $this->str_cmd[date('Y-m-d h:i:s')]='';    
        if($this->from_client){
            $this->str_cmd[date('Y-m-d h:i:s')]  = $this->from_client;
            self::write_callback_toclient();
            self::console();
            socket_set_block($this->connected);
                if(!$this->connected) $this->server_created_socket();
                $this->server_created_socket();
        }
    }
   
    function write_callback_toclient(){
        $this->to_client = $this->from_client;
        $this->writeLen  = socket_write($this->newSocket,$this->to_client,strlen($this->to_client)) or die('unable to write');
    }
   
    public function console(){
   
        if(is_array($this->str_cmd)){
            $n=0;
            foreach($this->str_cmd as $key=>$value){
                echo "[".$key."] :".$value." \n\r";
                $n++;
            }
        }
    }
 }
 
  ob_implicit_flush(true);    
  $ok = new server_socket($host="127.0.0.1",$port=9001,$max=0);

---EndPHP---
Kasih nama misalnya : server_socket.php, selanjutnya buat file untuk di sisi client :

<?php
$host        ="127.0.0.1";
$port         = 9001;
$message     = " IP : ".$_SERVER['REMOTE_ADDR'];
$socket     = socket_create(AF_INET, SOCK_STREAM, 0) or die("[".date('Y-m-d H:i:s')."]from Client: Could not create socket\n");
$result     = socket_connect($socket, $host, $port) or die("[".date('Y-m-d H:i:s')."]from Client: Unable to connect to server\n");

socket_write($socket, $message, strlen($message)) or die("from Client: Unable to send data to server\n");

$result     = socket_read ($socket, 1024) or die("from client: Could not read response from server \n");

socket_write($socket, "END", 3) or die("from client: Could not end session \n");
socket_close($socket);
$result     = trim($result);
echo "\n Message returned : ".$result;
?>
Kasih Nama : test_client3.php

selanjutnya kita test dengan membuka comand prompt ( saya pake windows dengan server local XAMPP)
  C:\xampp\php>php -f c:\\xampp\htdocs\smpchat\server_socket.php (Kebetulan letak folderya di smpchat , tapi mau di folder apa aja terserah ) yang penting di loclalhost



selanjutnya buka browser anda misalnya : Mozila

Seperti gamabar berikut ini:



Refresh berkali-kali..

setelah itu lihat reaksi pada program php yang kita jalankan di comand prompt :



Perhaltikan pada gambar ini , ternyata socket disisi server sudah meresponse file yang kita request dari sisi client .

Untuk membukitkannya  kita bisa mengakses dari beberapa browser seperti , crhome, IE, dll,

Ubah script disisi clientanya pada bagian

$_SERVER[‘REMOTE_ADDR’];

dengan $_SERVER[‘USER_AGENT’]

Karna jika benar maka pada php yang kita jalankan lewat console akan menampikan Request
client dari browser apa saja .

Oke untuk lebih lanjutnya silahkan di uji coba sendiri tentu dengan gaya-masing, dan yang penting gak mesti OOP,

kalau yang saya buat kebetulan saya lagi rajin Pake OOP php, gak pake OOP pun tetap bisa .

{ 0 comments... read them below or add one }

Post a Comment