Socket dalam Java : Basic

Huaaahhh.. sudah lama tidak nulis lagi di blog ini..
Kebetulan baru sadar juga ternyata belom ada cara coding socket pake Java.. hehehe..

Kalau mengenai pengertian socketnya sendiri mungkin bisa diliat di web lain atau di postingan saya yang Socket dalam C# : Basic. Codingannya pun mirip dengan yang ada di C#. Langsung ke codingannya aja ya.

Untuk kodingan di Servernya

public static void main(String[] args) {

   ServerSocket tServerSocket = null;
   try
   {
      tServerSocket = new ServerSocket(30190);
      while(true)
      {
         Socket tSocket = tServerSocket.accept();
         new Server(tSocket).start();
      }
   }
   catch(Exception ex)
   {
      ex.printStackTrace();
   }
}

Fungsi main tersebut memanggil kelas “Server”. Untuk kodingan di kelas Servernya adalah

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class Server extends Thread{

   Socket mClientSocket = null;

   public Server(Socket pSocket)
   {
      mClientSocket = pSocket;
   }

   @Override
   public void run()
   {
      try
      {
         PrintWriter tWriter = new PrintWriter(mClientSocket.getOutputStream(), true);
         BufferedReader tReader = new BufferedReader(new InputStreamReader(mClientSocket.getInputStream()));
         String tMessage = "";

         tWriter.println("OK");
         while(true)
         {
            tMessage = tReader.readLine();
            if(tMessage.equalsIgnoreCase("OK"))
            {
               tWriter.println("OK");
            }
         }
      }
      catch (Exception ex)
      {
         ex.printStackTrace();
      }
   }
}

Sedangkan untuk kodingan di clientnya adalah

public static void main(String[] args) {
   Socket tSocket = null;
   String tIPAddress = "127.0.0.1";

   try
   {
      tSocket = new Socket(InetAddress.getByName(tIPAddress), 30190);
      PrintWriter tWriter = new PrintWriter(tSocket.getOutputStream(), true);
      BufferedReader tReader = new BufferedReader(new InputStreamReader(tSocket.getInputStream()));
      String tMessage = "";

      while(true)
      {
         tMessage = tReader.readLine();
         if(tMessage.equalsIgnoreCase("OK"))
         {
            tWriter.println("OK");
         }
      }
   }
   catch(Exception ex)
   {
      ex.printStackTrace();
   }
}

Kode itu akan membuat client dan server berbalas “OK” tanpa henti untuk memainkan protokolnya tinggal masukkan saja message yang dibutuhkan untuk dikirim dan diterima seperti apa di dalam while(true) baik pada pada server maupun pada client.

Sekian dulu deh..

Selamat mencoba..^_^

HTTP dalam Java : Basic

Hoke.. tiba2 akhir – akhir ini tertarik dengan HTTP di Java. Jadi dengan HTTP ini memungkinkan kita untuk terhubung sama web – web di luar sana yang berawalan HTTP (contohnya http://www.wordpress.com, http://www.google.com, dll). Nah dengan begitu kita bisa mengambil content – content yang ada di HTTP dan terserah deh mau kita apain.. hehehe..

Langsung aja.. untuk memulai pertama – tama dibutuhkan 3 buah library untuk memulai :
1. HttpClient (bisa diunduh di sini)
2. HttpCore (bisa diunduh di sini)
3. CommonLogging (bisa diunduh di sini)

nah kalo udah add aja library-nya ke dalam project dalam hal ini saya pake IDE NetBeans.
Kita mulai ke sesi coding.

di dalam fungsi main :

public static void main(String[] args)
{
    HttpClient tHttpClient = new DefaultHttpClient();
    String tUrl = "http://serpihankode.wordpress.com";

    try
    {
        HttpGet tHttpGet = new HttpGet(tUrl);
        HttpResponse tResponse = tHttpClient.execute(tHttpGet);
        System.out.println(EntityUtils.toString(tResponse.getEntity));
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
}

code di atas akan mencetak source dari URL yang akan diakses, dalam hal ini http://serpihankode.wordpress.com
Url dalam kode diatas juga dapat digunakan untuk url yang menggunakan parameter (metode GET), contohnya http://www.example.com?username=user&password=pass

Lalu pertanyaan selanjutnya adalah bagaimana dengan metode POST??
langsung saja ke sesi codingnya.

di dalam fungsi main :

public static void main(String[] args)
{
    HttpClient tHttpClient = new DefaultHttpClient();
    String tUrl = "http://www.example.com/post.php";

    try
    {
        HttpPost tHttpPost = new HttpPost(tUrl);
        List tNVPS = new ArrayList();
        tNVPS.add(new BasicNameValuePair("username", "aaaa"));
        tNVPS.add(new BasicNameValuePair("password", "1234"));
        tHttpPost.setEntity(new UrlEncodedFormEntity(tNVPS, HTTP.UTF_8));

        HttpResponse tResponse = tHttpClient.execute(tHttpPost);
        System.out.println(EntityUtils.toString(tResponse.getEntity));
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
}

dalam kode di atas dimisalkan value akan dikirim ke URL tersebut dan menggunakan username aaaa dan password 1234.

OK. sekian dulu ya..

Selamat mencoba.. ^_^

Socket dalam C# : basic

Huaaah.. dah lama nggak nulis di blog ini.. kebetulan ada topik yang cukup menarik.. yak.. namanya socket..

Apakah itu socket?? kalo mau lengkapnya sih liat di wikipedia.. tapi intinya si socket ini sesuatu yang menghubungkan antar komputer agar komputer itu bisa saling berkomunikasi, entah itu chatting, kirim – kiriman file, dan lain – lain..

Nah langsung mulai aja ke tekniknya.. si socket ini mempunya dua komponen yaitu server dan client.. biasanya si komputer yang satu jadi server yang lainnya jadi client.. si server ini akan terus menunggu request dari client sehingga biasanya server harus dinyalakan duluan..

Untuk kodingan buat servernya

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.IO;

namespace SocketServer
{
    class Server
    {
        public Socket mClientSock = null;

        public Server()
        {
            try
            {
                IPEndPoint tIpEnd = new IPEndPoint(IPAddress.Any, 5656);
                Socket tSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
                tSocket.Bind(tIpEnd);
                tSocket.Listen(100);

                while (true)
                {
                    mClientSock = tSocket.Accept();

                    if (mClientSock.Connected)
                    {
                        Thread tc = new Thread(new ThreadStart(ListenClient));
                        tc.Start();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("File sending fail. " + e.Message);
            }
            finally
            {
                Console.ReadLine();
            }
        }

        private void ListenClient()
        {
            int tJumlahData = 1000
            Socket tSock = mClientSock;
            byte[] tStringSend = System.Text.Encoding.ASCII.GetBytes("OK");
            tSock.Send(tStringSend, tStringSend.Length, 0);

            while (tSock.Connected)
            {
                byte[] tRecCommand = new byte[tJumlahData];
                int tRecCount = tSock.Receive(tRecCommand, tRecCommand.Length, 0);
                string tMessage = System.Text.Encoding.ASCII.GetString(tRecCommand);
                tMessage = tMessage.Substring(0, tRecCount);
                string[] tCommandList = tMessage.Split(' ');
                if (tCommandList[0] == "OK")
                {
                    tStringSend = System.Text.Encoding.ASCII.GetBytes("OK");
                    tSock.Send(tStringSend, tStringSend.Length, 0);
                }
            }
        }
    }
}

Untuk kodingan di clientnya

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;

namespace SocketClient
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
		String tStringIP = "127.0.0.1"; //Diganti dengan IP server yang akan dituju"
                IPAddress tIP = IPAddress.Parse(tStringIP);
                IPEndPoint tIpEnd = new IPEndPoint(tIP, 5656);
                Socket tClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
                tClientSocket.Connect(tIpEnd);

                while (tClientSocket.Connected)
                {
                    byte[] tRecCommand = new byte[1000];
                    int tRecCount = tClientSocket.Receive(tRecCommand, tRecCommand.Length, 0);
                    string tMessage = System.Text.Encoding.ASCII.GetString(tRecCommand);
                    tMessage = tMessage.Substring(0, tRecCount);

                    if (tMessage == "OK")
                    {
                        byte[] tStringSend = System.Text.Encoding.ASCII.GetBytes("OK");
                        tClientSocket.Send(tStringSend, tStringSend.Length, 0);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("File sending fail. " + e.Message);
            }
        }
    }
}

Jika ke-dua program dijalankan maka mereka akan saling berbalas “OK” tanpa henti. jika ada command – command yang lain maka tinggal ditambahkan di dalam while(tClientSocket.Connected) pada client atau while(true) pada server..

Sekian dulu deh..

Selamat mencoba.. ^_^

OOP dalam PHP : MVC

Huaah.. kebetulan lagi ada tugas progin pake PHP.. nah kebetulan juga ngerti dikit – dikit masalah OOP dalam PHP.. sekedar sharing aja sih..

Dalam OOP kan juga dikenal tuh prinsip MVC (Model – Viewer – Controller) nah mau ngasih sedikit gambaran aja sih gimana cara make MVC dalam OOP.. hehehe

Sedikit ringkasan tentang MVC, Model akan berfungsi untuk memberikan data – data yang diperlukan, biasanya sih berhubungan dengan database. Viewer berfungsi sebagai pengatur tampilannya, dan Controller adalah penghubung antara model dan viewer.

pertama – tama kita coba buat viewer-nya :

<?php
   class view_index{
      function index($data){
         echo $data['title'];
         echo $data['tulisan'];
      }
   }
?>

nah di sana terlihat kita membuat class view_index yang didalamnya ada fungsi indexdan memiliki parameter $data dimana $data itu sendiri adalah kumpulan dari variabel – variabel lainnya. Setelah itu kita simpan dengan nama viewer_index.php

lalu lanjut ke modelnya :

<?php
   class model_index{
      function getJudul(){
         return "DFD";
      }

      function getTulisan(){
         return "DFD Forum DPP";
      }
   }
?>

karena kita tahu bahwa di viewer membutuhkan data title dan tulisan maka model akan mengakomodasi kebutuhan si viewer tersebut. dengan dua fungsi yaitu getJudul dan getTulisan. Biasanya sih nggak secupu itu langsung di-return. biasanya pake akses – akses ke database. tapi males nerangin disini cara ngakses ke databasenya. Hehehe. Setelah itu kita simpan dengan nama model_index.php

nah ini di bagian paling menariknya yaitu membuat controllernya :

<?php
   include("viewer_index.php");
   include("model_index.php");

   class controller_index{
      function index(){
         $data['titlle'] = model_index::getJudul();
         $data['tulisan'] = model_index::getTulisan();
         view_index::index($data);
      }
   }
?>

di awal – awal kita include dulu viewer dan model yang sudah kita buat lalu dengan fungsi itu kita siapkan data – data yang akan dimasukkan ke viewer. Data – data itu kita dapat dari model caranya dengan memanggil fungsi yang ada di model. Setelah data sudah siap barulah kita masukkan ke dalam viewer.

nah model, view, dan controller sudah jadi. Jadi, apa yang akan kita lakukan selanjutnya?? Dalam PHP dia akan langsung memanggil index.php karena itu bagaimana cara mengakses controller kita?

<?php
   include("controller_index.php");

   controller_index::index();
?>

nah hanya tinggal begitu saja. Seperti layaknya main program dalam OOP yang memang tidak terlalu banyak baris di dalamnya. Simpanlah dengan nama index.php

Selamat mencoba.. ^_^

OOP dalam PHP : Class

nah OOP tentu tidak lepas dengan yang namanya Class. Ternyata di PHP pun ada loh Class itu. dan penggunaannya mirip sekali dengan class yang biasa kita pakai di Java ataupun C++

<?php
   class member{

   }
?>

lalu untuk memasukkan atribut dan fungsinya juga hampir mirip
<?php
   class member{
      var $nama;

      function setNama($newNama){
         $this->nama = $newNama;
      }

      function getNama(){
         return $this->nama;
      }
   }
?>

cukup mudah bukan?? lalu coba simpan dengan nama file member.php
Setelah itu kita coba langsung kita coba implementasikan di index.php
<?php
   include("member.php");

   $guest = new member();
   $guest->setNama("Aqsath");

   echo "Nama member adalah :" . $guest->getNama();
?>

nah, mantab kan?? kita sudah bisa membuat class dan member class itu sekaligus menggunakan fungsi – fungsi di dalamnya..

Apakah sampai disitu saja?? ternyata tidak.. hehe.. seperti biasa dalam class juga dikenal constructor. Di PHP pun constructor itu disediakan dengan fungsi __construct()

kita ambil contoh member.php yang tadi kita modif sedikit :

<?php
   class member{
      var $nama;
      function __construct($namaMember){
         $this->nama = $namaMember;
      }
      function setNama($newNama){
         $this->nama = $newNama;
      }

      function getNama(){
         return $this->nama;
      }
   }
?>

lalu di index.php kita modif juga menjadi :
<?php
   include("member.php");

   $guest = new member("Aqsath");

   echo "Nama member adalah :" . $guest->getNama();
?>

akan menghasilkan hasil yang sama dengan index.php sebelum dimodif..
class ini pun bisa diberikan access modifier seperti yang sering kita gunakan di OOP.
kita modif lagi member.php menjadi :
<?php
   //TAMBAHAN : protected
   protected class member{
      var $nama;

      function __construct($namaMember){
         $this->nama = $namaMember;
      }

      function setNama($newNama){
         $this->nama = $newNama;
      }

      function getNama(){
         return $this->nama;
      }
   }
?>

nah bagaimana?? sudah lebih OOP banget kan?? hehehe.. oh iya, materi terakhir yaitu turunan..udah akrab banget lah yah dengan yang namanya inheritance ini.
<?php
   include("member.php");

   class administrator extends member{

      private var $thread_id;
      public __construct($adminName, $idThread){
         $this->nama = $adminName;
         $this->thread_id = $idThread;
      }
   }
?>

disini kita administrator adalah kelas turunan dari member yang mempunyai hak atas thread tertentu di sebuah forum. Kita bisa menurunkannya dari kelas member dan menambahkan satu atribut lagi dengan mengoverride konstruktor member.

Sekian dulu deh.. cape ngetik banyak – banyak.. hehe..

Selamat mencoba.. ^_^

Singleton : Makhluk yang kesepian

huwaaah.. ntah mungkin gara – gara beneran kesepian atau gimana.. jadi pingin ngeposting masalah singleton..

singleton ini mantab banget loh.. dia ini salah satu pattern yang bisa dibilang sering digunakan.. Jadi singleton ini adalah sebuah objek (biasanya digambarkan dengan class) yang hanya ada satu di seluruh aplikasi.. biasanya kan kalo kita abis buat class terus kita new – new gitu.. nah kalo singleton nggak bisa dibuat.. dia cuma bisa digunakan.. bingung?? semakin menarik.. :P

gini2 contohnya kita ngebuat game.. nah kan karakter utama cuma ada 1 doang kan di seluruh game (tergantung gamenya sih.. -___-). Mau itu game udah pindah – pindah map, udah beli barang, udah bertarung, udah mati mungkin.. tapi karakternya masih sama – sama aja kan..

nah itu tadi penjelasan dan gunanya.. sekarang gimana sih cara ngebuatnya??

class Karakter
{
    public int HP;
    public int MP;
    public int Attack;
    public int Defence;

    private static Karakter instance = new Karakter();
    public static Karakter GetSingleton()
    {
        return instance;
    }

    private Karakter()
    {
        HP = 100;
        MP = 50;
        Attack = 97;
        Defence = 68;
    }
}

nah itu cara buatnya.. terus gimana sih cara makenya??
kalo mau ngakses karakter yang itu.. kita tinggal panggil aja singletonnya.. misalnya mau ngeliat hpnya maka..

C++ : cout << Karakter.GetSingleton().HP << endl;
C# : Console.WriteLine(Karakter.GetSingleton().HP);
Java : System.out.println(Karakter.GetSingleton().HP);

yah intinya mah itu.. dan yang perlu diingat perintah itu bisa dijalankan dimanapun anda menuliskannya.. kenapa?? karena dia GetSingleton adalah public static dia bisa diakses, diubah, dan diaapa – apain darimanapun.. menarik bukan??

nah cocok banget nih.. buat misalnya database, atau karakter sebuah game, atau biasanya form di C# juga bisa sih.. hehehe.. yah.. dicoba – coba aja yah..

Selamat mencoba.. ^_^

Clipboard dalam C# : Text ke Gambar

intinya sih mudah..

1. Mengubah teks di textbox menjadi gambar
2. Mengeset gambar itu ke dalam clipboard

biasanya ini berguna kalo mau bikin program yang mau format tulisannya nggak berubah – berubah.. misalnya untuk teks – teks yang pake unicode (contohnya : bahasa arab)

1. Mengubah teks di textbox menjadi gambar

private Bitmap CreateBitmapImage(string sImageText)
{
    Bitmap bmpImage = new Bitmap(1, 1);
    int iWidth = 0;
    int iHeight = 0;

    Font MyFont = new Font("Verdana", 24, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);

    StringFormat strFormat = new StringFormat();
    strFormat.Alignment = StringAlignment.Far;

    Graphics MyGraphics = Graphics.FromImage(bmpImage);

    iWidth = (int)(MyGraphics.MeasureString(sImageText, MyFont, 1000).Width * 1.25);
    iHeight = (int)MyGraphics.MeasureString(sImageText, MyFont).Height * 5;

    bmpImage = new Bitmap(bmpImage, new Size(iWidth, iHeight));

    Rectangle rect = new Rectangle(0, 0, iWidth, iHeight);

    MyGraphics = Graphics.FromImage(bmpImage);
    MyGraphics.Clear(Color.White);
    MyGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
    MyGraphics.DrawString(sImageText, MyFont, new SolidBrush(Color.Black), rect, strFormat);
    MyGraphics.Flush();

    return bmpImage;
}

2. Mengeset gambar itu ke dalam clipboard

//Dimisalkan textbox yang akan dicopy adalah textBox1
string temp = textBox1.getText();
Clipboard.SetImage(CreateBitmapImage(temp));

Setelah gambar itu masuk ke dalam clipboard, anda dapat mempastenya dimanapun.. di word misalnya atau di paint…

Selamat mencoba.. ^_^

Follow

Get every new post delivered to your Inbox.