Selasa, 10 Desember 2013

PHP Socket

PHP Socket
Dalam socket programming, pasti berhubungan dengan port dan service. Misal kita mengakses port 80, dan service yang berjalan dari port 80 tersebut adalah web server. Port 22 untuk service SSH, port 21 untuk service FTP dan sebagainya.
Socket merupakan literal Connector antara port dan Program, dan socket programming adalah suatu programming untuk mengakses, menggunakan dan menyediakan service dalam suatu komunikasi atara server dan client menggunakan port tertentu.
Ada 2 macam protokol komunikasi yang dapat digunakan untuk socket programmin, yaitu:
1. Datagram Communication, atau biasa dikenal dengan istilah UDP(User Datagram Protocol). Datagram berupa connectionless protocol, yang berarti setiap saat kita dapat mengirim data ke server dan tidak akan di cek data tersebut sampai atau rusak.
2. Stream Communication, atau biasa dikenal dengan istilah TCP(Transfer Control Protocol). Tidak seperti UDP, TCP merupakan connection-oriented protocol yaitu saat terjadi komunikasi harus ada pairing(terbangun koneksi antar server-client) setelah itu pengiriman data baru dapat dilakukan. Kerusakan atau kehilangan data dapat di tangani karena terdapat flag/tanda untuk pengecekan data.
Berikut contoh Script Socket Client, yang digunakan untuk mengakses domain amikom.ac.id menggunakan parameter GET
$fp = fsockopen ("amikom.ac.id", 80);
if ($fp) {
fwrite($fp, "GET / HTTP/1.1\r\nHOST: amikom.ac.id\r\n\r\n");
while (!feof($fp)) {
print fread($fp,256);
}
fclose ($fp);
} else {
print "Fatal error\n";
}
fungsi fsockopen() di atas akan membuka sebuah alamat server dengan port yang kita tentukan, kemudian setelah terjadi koneksi dengan server kita dapat meminta request dengan menggunakan protokol HTTP. Kita gunakan fungsi fwrite() untuk mengirim request tsb, pada contoh script diatas kita gunakan GET untuk meminta request ke server.
Berikut script Socket server menggunakan mode TCP, dengan fungsi membalik kata yang diinputkan dari user
<?php
$socket = socket_create_listen("9000");
if (!$socket) {
print "Failed to create socket!\n";
exit;
}
while (true) {
$client = socket_accept($socket);
$welcome = "\nWelcome to the Local machine.\n
Type '!close' to close this connection, or type '!halt'
to halt the server.\n";
socket_write($client, $welcome);
while (true) {
$input = trim(socket_read ($client, 256));
if ($input == '!close') {
break;
}
if ($input == '!halt') {
socket_close ($client);
break;
}
$output = strrev($input) . "\n";
socket_write($client, $output);
print "In: $input, Out: $output\n";
}
socket_close ($client);
}
 socket_close ($socket);
?>
Programming socket ini bisa digunakan untuk berkomunikasi antara low level programming dengan PHP, misal seperti device sensor yang dapat mengirim data ke server melalui Internet atau Device GPS yang mengirim data NMEA ke server melalui GPRS dan sebagainya.

1 komentar:

  1. permisi gan, saya ada sedikit tulisan mengenai protokol websocket dalam bahasa php berikut: http://datacomlink.blogspot.co.id/2015/11/script-php-websocket-rfc-6455-server.html ditunggu feedback-nya ya gan, semoga menambah wawasan bersama.. terima kasih gan..

    BalasHapus