Rabu, 18 Mei 2016

PEMROGRAMAN SOCKET UDP


PEMROGRAMAN SOCKET UDP
Pemrograman  socket dengan UDP (connectionless) dengan PHP merupakan salah satu  pemrograman jaringan yang dapat digunakan untuk saling berkomunikasi antara server dengan Client

Kajian ini berisi uraian protocol UDP menyangkut tentang konsep komunikasi antar proses, socket address yang dilengkapi dengan pembahasan konsep pemrograman client server serta perbandingan antara keduanya. Implementasi  pada UDP socket menggunakan bahasa pemrograman PHP, Pembahasan program dibagi ke dalam dua bagian yakni  pemrograman UDP socket  pada client dan pemrograman UDP socket pada server.




PENJELASAN PADA PEMROGRAMAN SERVER
SOCKET_CREAT
Untuk membuat socket paru pada server menggunakan “socket_creat” dengan Nilai konstanta parameter family protocol TCP/IP  IPv4 adalah AF_INET, Untuk Nilai parameter type untuk protocol  protocol UDP adalah SOCK_DGRAM. Untuk Nilai parameter protocol selalu di set 0 (nol) untuk penggunaan protocol TCP atau UDP. Program di bawah ini akan tampil jika creat socket Gagal dengan hasil tampilan “couldn’t create soccket:([$errorcode]->menunjukkan code di nomor berapa terjadi error) ($errormsg\n->tidak dapat menampilkan pesan) 

{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    die("Couldn't create socket: [$errorcode] $errormsg \n");
}

Tetapi jika berhasil maka akan tampil  echo "Socket created \n";  --à “Socket Create” 

//create socket

error_reporting(~E_WARNING);

 //Create a UDP socket

if(!($sock = socket_create(AF_INET, SOCK_DGRAM, 0)))
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    die("Couldn't create socket: [$errorcode] $errormsg \n");
}
 

SOCKET_BIND

Membuat socket Bind. Fungsi socket_bind() mengikat socket address local ( sebuah IP Address dan sebuah port number )  dengan  sebuah variable socket yang sudah dibentuk melalui fungsi socket_created().

Socket _Bind bertipe  AF_INET family, Notasi IP Address dalam bentuk dotted-quad  (“0.0.0.0”,9999). Bila berhasil fungsi ini akan bernilai  true dan false bila gagal


//socket Bind
if( !socket_bind($sock, "0.0.0.0" , 9999) )
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
      die("Could not bind socket : [$errorcode] $errormsg \n");
}
 echo "Socket bind OK \n";

RECEIVE DATA FROM CLIENT
Fungsi ini berguna untuk menerima data dari  sebuah socket TCP maupun UDP. Bila berhasil dikerjakan fungsi ini akan bernilai jumlah byte yang diterima atau  FALSE bila tidak berhasil. While(1) melakukan perulangan sebanyak 1 kali.     $r = socket_recvfrom($sock, $buf, 512, 0, $remote_ip, $remote_port);  echo "$remote_ip : $remote_port -- " . $buf; fungsi ini menerima pesan dari ip client yang terhubung pada server.
 

while(1)
{
    echo "Waiting for data ... \n";
      //Receive some data
    $r = socket_recvfrom($sock, $buf, 512, 0, $remote_ip, $remote_port);
    echo "$remote_ip : $remote_port -- " . $buf;
}
 

         PENJELASAN PEMROGRAMAN PADA CLIENT

SOCKET_CREAT
Untuk membuat socket paru pada Client menggunakan “socket_creat” dengan Nilai konstanta parameter family protocol TCP/IP  IPv4 adalah AF_INET, Untuk Nilai parameter type untuk protocol  protocol UDP adalah SOCK_DGRAM. Untuk Nilai parameter protocol selalu di set 0 (nol) untuk penggunaan protocol TCP atau UDP. Program di bawah ini akan tampil jika creat socket Gagal dengan hasil tampilan “couldn’t create soccket:([$errorcode]->menunjukkan code di nomor berapa terjadi error) ($errormsg\n->tidak dapat menampilkan pesan) 

{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    die("Couldn't create socket: [$errorcode] $errormsg \n");
}

Tetapi jika berhasil maka akan tampil  echo "Socket created \n";  --à “Socket Create”
 $server = '127.0.0.1'; merupakan ip dari pada Server yang akan di hubungkan dengan $port = 9999;

  //create socket clieent


error_reporting(~E_WARNING);
 $server = '127.0.0.1';
$port = 9999;
 if(!($sock = socket_create(AF_INET, SOCK_DGRAM, 0)))
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    die("Couldn't create socket: [$errorcode] $errormsg \n");
}
 echo "Socket created \n";

 MENGIRIM PESAN PADA SERVER

Socket_sendto berfungsi  untuk mengirimkan pesan ke  sebuah socket. while(1) merupakan perulangan.  echo 'Enter a message to send : ';  $input = fgets(STDIN); merupakan pesan yang akan dikirim pada server.     if( ! socket_sendto($sock, $input , strlen($input) , 0 , $server , $port)) pemanggilan port server dan $input merupakan isi pesan yang akan di kirimkan pada server. Sementara program di bawah ini merupakan pesan yang menunjukkna bahwa pesan yang di kirim pada server gagal. Dan menampilkan nomor code yang error pada program socket client.



    {
$errorcode = socket_last_error();
$errormsg=socket_strerror($errorcode);
die("Could not send data: [$errorcode] $errormsg \n");
    }

//mengirim pesan pada server


while(1)
{
    //Take some input to send
    echo 'Enter a message to send : ';
    $input = fgets(STDIN);
     //Send the message to the server
    if( ! socket_sendto($sock, $input , strlen($input) , 0 , $server , $port))
    {
$errorcode = socket_last_error();
$errormsg=socket_strerror($errorcode);
die("Could not send data: [$errorcode] $errormsg \n");
    }

BENTUK PEMROGRAMAN SOCKET UDP
 

HASIL TAMPILAN MENGGUNAKAN COMMAND PROMP ( CMD )
 

    

 

1 komentar: