Posts Tagged ‘php’
[Tutorial] Flash dan Socket Version 2
Setelah sebelumnya sukses dengan tulisan ini saya kembali lagi dengan tutorial yang lebih canggih, masih tentang Flash dan PHP Socket. Kalau belum pernah baca tulisan sebelumnya sebaiknya baca dulu ya fren (maap, gak enak sebut2 kompetitor
)
Sebenernya ada alasannya kenapa saya membuat tulisan ini, kemarin ada temen yang kirim message lewat GTalk. Saya kasih kutipannya :
1:19 PM Bowo: dit1:20 PM me: yupBowo: gw mo nanya soal blog lo yang tentang socket itubisa sekarang?me: okeknp ?bisa2Bowo: bisa sih bisa1:21 PM tapi cuman di compiler doankme: trus ?connection failed ya ?Bowo: jadi kalo swfnya dibuka pake browser, bakalan ada error security gitu enggame: phpnya dah running ? pake perintah “php.exe -q <script>”ooo1:22 PM security ya?Bowo: kalo ctrl+enter di flash-nya okme: pasti portnya lu kasih < 1024 ya?Bowo: ga koq9999me: pake Flash Player berapa ?Bowo: 9

Security.loadPolicyFile(“xmlsocket://localhost:80″);
socket = new Socket();
socket.connect(“localhost”, 80);
- Flash Player mengirimkan pesan dalam bentuk xml: <policy-file-request/>
- Bila server mengembalikan xml seperti ini : <?xml version=”1.0″?><cross-domain-policy><allow-access-from domain=”*” to-ports=”80″ /></cross-domain-policy>, maka Flash Player tersebut diijinkan untuk mengakses port 80.
- Kalau misalnya Flash Player tidak menerima ijin (berupa file xml diatas) maka koneksi terpaksa diputus.
Security.loadPolicyFile(“xmlsocket://localhost:80″);
if (preg_match(“/policy-file-request/i”, $buffer) || preg_match(“/crossdomain/i”, $buffer)) {
$contents=’<?xml version=”1.0″?><cross-domain-policy><allow-access-from domain=”*” to-ports=”80″ /></cross-domain-policy>’;
socket_write($socket,$contents);
$contents=”";
$index = array_search($socket, $read_sockets);
unset($read_sockets[$index]);
socket_shutdown($socket, 2);
socket_close($socket);
}
- Server, socket server. Cara menjalankannya, ketik di console/command prompt, php.exe -q <NAMA_SKRIP>
- SMS Result, menampilkan hasil sms
- SMS Simulation, kirim smsmnya pakai aplikasi ini aja, tapi gak benar-benar sms, cuma simulasi
[Tutorial] Flash dan Socket
Kenapa gw bikin tutorial ini ? karena di kantor gw lagi-lagi berhubungan dengan aplikasi client-server buat suatu acara nasional dan gw milih pakai flash karena gampang untuk desain dan maintenance. Sebetulnya pakai Java or PHP bisa cuma kalo PHP minimal harus web-based atau kalo gak desktop application pake PHP (PHP-CLI), Java juga bisa dua-duanya tapi effortnya mungkin lebih berat daripada pakai Flash. Flash ini gw buat sebagai desktop application, jadi gak perlu install Flash Player. Udah lebih dari 3 tahun gw gak pernah sentuh-sentuh yang namanya Flash, dalam arti bikin aplikasi yang berat-berat.
Oke deh, langsung aja. Gw disini gak jelasin soal apa itu Socket atau Flash atau bagaimana cara menggunakan Adobe Flash. Kita akan membuat aplikasi Chat room. Kita harus tau beberapa hal sebelum memulai :
- Mengerti PHP, kalau ngerti socket lebih baik
- Mengerti konsep Adobe Flash
- Sedikit bisa Actionscript
Aplikasi yang dibutuhkan adalah :
- Web Server yang sudah dikonfigurasi dengan PHP
- Editor text
- Adobe Flash 8
Mungkin ada yang bertanya, “kok gak pake database sih ?”, kita gak perlu database karena sebenernya gw disini mau memperlihatkan membuat aplikasi client-server yang high-performance, hemat bandwidth dan elegan.. cie hahaha..
Arsitektur sistemnya begini, Client -> Socket Server -> Client, jadi gak ada yang namanya frequently-pooling dari client. Kalo kita tiap detik request ke server buat liat ada message baru ato gak, itu namanya boros bandwidth. Coba kalo aplikasinya gak kita pake, tapi cuma di run aja, udah lumayan tuh
nah kalo pake socket, ntar socket servernya yang push ke client.. gitu lho.
Pertama kita bikin dulu socket servernya pake PHP. Copas skrip ini ke text editor trus save dengan nama yang kalian mau. Misal, chat.php.
#!/usr/bin/php -q
<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$address = ‘172.16.34.170′; //ganti dengan localhost atau ip komputer kamu
$port = 9999; //terserah berapa aja, asal diatas 1024. Karena flash membaca port > 1024
function send_Message($allclient, $socket, $buf) {
foreach($allclient as $client) {
socket_write($client, “$socket wrote: $buf”);
}
}if (($master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo “socket_create() failed, reason: ” . socket_strerror($master) . “n”;
}socket_set_option($master, SOL_SOCKET,SO_REUSEADDR, 1);
if (($ret = socket_bind($master, $address, $port)) < 0) {
echo “socket_bind() failed, reason: ” . socket_strerror($ret) . “n”;
}
if (($ret = socket_listen($master, 5)) < 0) {
echo “socket_listen() failed, reason: ” . socket_strerror($ret) . “n”;
}
$read_sockets = array($master);
while (true) {
$changed_sockets = $read_sockets;
$num_changed_sockets = socket_select($changed_sockets, $write = NULL, $except = NULL, NULL);
foreach($changed_sockets as $socket) {
if ($socket == $master) {
if (($client = socket_accept($master)) < 0) {
echo “socket_accept() failed: reason: ” . socket_strerror($msgsock) . “n”;
continue;
} else {
array_push($read_sockets, $client);
}
} else {
$bytes = socket_recv($socket, $buffer, 2048, 0);
if ($bytes == 0) {
$index = array_search($socket, $read_sockets);
unset($read_sockets[$index]);
socket_close($socket);
}else{
$allclients = $read_sockets;
array_shift($allclients);
send_Message($allclients, $socket, $buffer);
}
}}
}
?>
kita menjalankan skrip diatas bukan sebagai web, tapi sebagai aplikasi shell. Buka command line trus masuk kedalam folder dimana file PHP.EXE berada, trus ketik
php.exe -q <PATH_SKRIP_DIATAS>chat.php
nah… harusnya commandline nya diem aja… itu berarti kita berhasil membuat socket server. Gw gak akan jelasin baris-perbaris skrip diatas, skrip diatas sebenernya gw kompilasi dari beberapa sumber setelah baca PHP Manual
Tahap pertama berhasil, sekarang tinggal bikin aplikasi desktopnya deh..
buka Adobe Flash 8 trus bikin seperti gambar dibawah.
objek2nya adalah dynamictext (kasih nama msgArea), inputtext (kasih nama inputMsg), trus sama Component Button (kasih nama pushMsg). disitu ada 2 layer, 1 buat action, 1 buat object2 tadi.
Trus klik di frame 1 pada layer 1, pencet F9 buat buka Actionscript editor. copas aja kode dibawah
mySocket = new XMLSocket();
mySocket.onConnect = function(success) {
if (success) {
msgArea.htmlText += “<b>Server connection established!</b>”;
} else {
msgArea.htmlText += “<b>Server connection failed!</b>”;
}
};
mySocket.onClose = function() {
msgArea.htmlText += “<b>Server connection lost</b>”;
};
XMLSocket.prototype.onData = function(msg) {
msgArea.htmlText += msg;
};
mySocket.connect(“172.16.34.170″, 9999); //IP address socket server yang dibuat tadifunction msgGO() {
if (inputMsg.htmlText != “”) {
mySocket.send(inputMsg.htmlText+”n”);
inputMsg.htmlText = “”;
}
}
pushMsg.onRelease = function() {
msgGO();
};
jadi deh hehehe… gampang khan ? ya iyalah, Flash udah membungkus fungsi2 socket ke dalam method2 yang gampang digunain. Di Flash ada 4 method yang digunakan untuk socket:
- onConnect, method ini dipanggil ketika koneksi ke server dan bisa kita override
- onClose, method ini dipanggil kalau koneksi ke server putus, dan bisa kita override juga
- onData, method ini dipanggil ketika server mengirimkan data ke client. data yang dikirim oleh server harus diakhiri dengan chr(0) atau zero byte, kalau gak gitu, flashnya gak akan nerima
- onXML, kalau yang ini dipanggil kalau ada xml yang datang dengan koneksi XMLSocket
setelah itu coba deh di publish flashnya, trus jalanin deh file .swf nya atau file .exe nya. Simpel banget khan ? masih banyak aplikasi yang bisa dibikin pake socket dan flash… kebayang donk, flash gak cuma sebagai animation-tool tapi bisa sebagai RIA / Rich Internet Application. Ide-ide aplikasi lain :
- Messenger
- Monitoring Data
- Online Games
- Portable shell window
- dsb
- dsb
- dsb
Hosting Gratis
Saya pernah punya account hosting berbayar sewaktu SMU dulu, tujuannya waktu itu lagi-lagi cuma biar disangka “melek internet” diantara temen-temen. Waktu itu saya hosting di PT MWN sepaket dengan domainnya. Hosting tersebut saya gunakan untuk menampilkan website pribadi yang isinya cuma foto dan biodata, belum terpikir untuk digunakan sebagai blog apalagi menggunakan bahasa pemrograman yang njlimet, cukup HTML saja. Setelah hampir 2 tahun (selama SMU) website saya rasa tidak berguna sehingga setelah habis masa berlakunya tidak saya perpanjang. Ketika masuk kuliah di Jurusan Teknik Informatika Sekolah Tinggi Teknologi Telkom saya juga pernah punya hosting berbayar walaupun berdua dengan teman, lagi-lagi saya merasa belum ada gunanya mempunyai website sendiri.
Nah, ketika saya butuh untuk melakukan live test tugas akhir saya yang berjudul “Analisis dan Implementasi AJAX Menggunakan Framework Dojo Toolkit” saya sempat kebingungan untuk mencari hosting karena saya tidak akan menggunakannya terlalu lama, paling lama 1 bulan. Akhirnya saya menggunakan jasa Google untuk mencari hosting gratis yang mendukung PHP 5.x.x, MySQL versi 3 atau yang lebih baru, dan yang terpenting bebas iklan atau banner. Setelah sekitar satu hari mencoba banyak sekali jasa hosting gratis saya menemukan 2 penyedia jasa tersebut yaitu :
Saya telah mencoba dua-duanya dan saya lebih memilih pilihan kedua karena pada awardspace hanya menyediakan storage sebesar 200MBytes sedangkan 000webhost menyediakan 250MBytes dan CPanel yang lebih manusiawi karena benar-benar bebas banner. Bahkan akses FTP menggunakan Filezilla lebih stabil dibandingkan dengan Awardspace.
Berikut saya tampilkan versi PHP yang digunakan pada 000webhost.

Semoga informasi ini bermanfaat. Sekian.
