Belajar membuat aplikasi socket Dengan PHP

                                  

Ok sahabat muda pecinta komputer sekian lama saya tidak pernah memposting artikel baru di blog ini membuat saya semakin rindu untuk menulis lagi,  ide dan pemikiran yang ingin saya tuangkan dalam bentuk tulisan , tentunya sangat banyak .  Namun terkadang rasa malas sering kali berkelayutan , tapi kali ini saya coba sempatkan menulis artikel ini,
Mungkin bagi yang sering bermain dengan socket programming judul ini mungkin udah gak asing lagi tapi bagi saya pribadi justru menarik dan menantang, apa manfaat pemograman dengan socket applikasi ?..
Contoh yang paling sederhananya adalah membuat program chating tanpa menggunakan database , ya sebenarnya bisa juga membuat applikasi chtaing dengan database hanya saja dalam jumlah tertentu kurang effective.
Awalnya saya coba-coba membuat script untuk bermain client server di php , lama-kelamaan rupanya menarik juga akhirnya ya sudah saya langsung menuju ke Refrensinya PHP di : http://www.php.net/manual/en/ref.sockets.php
Silahkan  di ubek-ubek ( he…. He… )…
Disini saya punya dua file pertama untuk di sisi server dan yang kedua di sisi Client , berikut ini untuk script disisi server :
Script
--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 .
Selamat mencoba N good luck.. :)
https://rahmatvinacerpus.wordpress.com/2012/01/25/belajar-membuat-applikasi-socket-dengan-php/

Postingan terkait:

Belum ada tanggapan untuk "Belajar membuat aplikasi socket Dengan PHP"

Post a Comment