Senin, 03 Juni 2013

Program Kirim dan Terima SMS dengan JAVA


Oke bocah-bocah kali ini saya ingin coba berbagi ilmu mengenai pemrograman di dalam bahasa java, dimana kali ini kita akan coba membuat program kirim dan terima sms yang nanti akan kita jalankan dengan menggunakan sun java wireless toolkit.

pertama pastikan komputer  sudah terinstal java jdk-nya dan sun java wireless toolkit. setelah itu ketik program berikut di notepad dan simpan dengan nama KirimSMS.java. nah berikut source code nya :

import javax.microedition.io.Connector;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;

public class KirimSMS extends MIDlet implements
CommandListener,Runnable {

private Form sendMessageForm;
 private TextField number, msg;
 private Command cmdOK,cmdExit;
 private String telpNum, isiPesan = "";

 public KirimSMS(){
  cmdExit = new Command("Back", Command.EXIT, 2);
  cmdOK = new Command("Send", Command.SCREEN, 2);
  sendMessageForm = new Form("Send Message");
  msg = new TextField("Message:", null, 50, TextField.ANY);
  number = new TextField("Telepon:", null, 15, TextField.PHONENUMBER);

sendMessageForm.append(number);
  sendMessageForm.append(msg);
  sendMessageForm.addCommand(cmdOK);
  sendMessageForm.addCommand(cmdExit);
  sendMessageForm.setCommandListener(this);
 }
protected void destroyApp(boolean arg0) {
  notifyDestroyed();
 }

protected void pauseApp() {
 }

protected void startApp() throws MIDletStateChangeException {
  Display.getDisplay(this).setCurrent(sendMessageForm);
 }

public void commandAction(Command arg0, Displayable arg1) {
  if(arg0==cmdOK){
   telpNum = number.getString();
   isiPesan = msg.getString();
   new Thread(this).start();
   number.setString("");
   msg.setString("");
   Display.getDisplay(this).setCurrent(sendMessageForm);
  }else if(arg0==cmdExit){
   destroyApp(true);
  }
 }

 public void run() {
  try{
   String nomorTelp = "sms://" + telpNum + ":1234";
   MessageConnection conn = (MessageConnection)Connector.open(nomorTelp);
   TextMessage msg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE);
   msg.setPayloadText(isiPesan);
   conn.send(msg);
   conn.close();
  }catch(Exception e){
   e.printStackTrace();
  }

}

}

kedua , jika kita sudah membuat program yang diatas tadi, selanjutnya kita akan membuat program untuk terima smsnya, nah berikut source code nya dan jika selesai simpan dengan nama TerimaSMS.java

import javax.microedition.io.Connector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.TextBox;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.Message;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;

public class TerimaSMS extends MIDlet implements Runnable, CommandListener {

 private TextBox tb;
 private String text = "Menunggu pesan...";
 private Command okComand;

 public TerimaSMS() {

  tb = new TextBox("Hello MIDlet", text, 150, 0);

 }

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
 }

 protected void pauseApp() {
 }

 protected void startApp() throws MIDletStateChangeException {
  Display.getDisplay(this).setCurrent(tb);
  new Thread(this).start();

 }

 public void changeScreen() {
tb = new TextBox("SMS MIDlet", text, 150, 0);
  Display.getDisplay(this).setCurrent(tb);
 }

 public void addConfirmation(String msg) {
  tb = new TextBox("SMS MIDlet", text, 150, 0);
  tb.setString(msg);
  okComand = new Command("OK",Command.OK,1);
  tb.addCommand(okComand);
  tb.setCommandListener(this);
  Display.getDisplay(this).setCurrent(tb);
 }

 public void run() {
  try {
MessageConnection rconn = (MessageConnection) Connector
     .open("sms://:1234");

   while (true) {
    Message msg = rconn.receive();
    if (msg instanceof TextMessage) {
     TextMessage tmsg = (TextMessage) msg;
     String msgOut = tmsg.getPayloadText();

     addConfirmation(msgOut);
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }

}

public void commandAction(Command arg0, Displayable arg1) {
 }
}

ketiga, kita beralih ke sun java wireless toolkit. sebelumnya  pastikan kita telah menginstal sun java wireless toolkit, jika selesai sekarang buka wireless toolkit 2.5.2
keempat,  klik new project
kemudian pada project name dan MIDlet class name isikan KirimSMS, kemudian klik create project. kemudian pilih new project lagi dan pada project name dan MIDlet class name isikan TerimaSMS.

kelima, pindahkan program KirimSMS.java  dan TerimaSMS.java yang telah kita simpan tadi ke j2mewtk\2.5.2\apps\KirimSMS\src
keenam, jika selesai, kita kembali lagi ke wireless toolkit. sekarang kita klik open project dan buka project dengan nama KirimSMS
kemudian jika selesai klik button build, kemudian pilih edit-preferences-WMA.
nah pada pada first assigned phone number, isikan nomor handphon. nomor itu bertujuan sebagai nomor handphone yg digunakan pada simulasi program kirim dan terima sms dan no itu juga bisa diganti dengan no yang lain. jika selesai klik ok
lakukan hal yang sama pada program TerimaSMS akan tetapi isikan no yang berbeda dengan Kirim SMS. jika selesai klik run untuk menjalankan programnya. dan untuk menjalankan program nya tinggal klik launch aja di masing2 simulasi handphone nya

sekian…

Minggu, 19 Mei 2013

Program Chat Sederhana Dengan Java


Ok para bocah, ketemu lagi bersama BoKom.. kali Ini BoKom akan mencoba mengsharing tentang bagaimana cara membuat program chatting sederhana di dalam pemrograman java. Dibawah ini ada programnya, silakan para bocah dicoba..

import java.io.*;
import java.net.*;
import java.util.Scanner;

public class chat{
    static void Server() throws IOException {
        String ip;
        BufferedReader cmb=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Masukkan IP Client : ");
        ip=cmb.readLine();
        Socket client=null;
        client=new Socket(""+ip,8888);
        BufferedReader sin=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream sout=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String s;
        while (true){
        System.out.print("Server : ");
        s=stdin.readLine();
        sout.println(s);
        s=sin.readLine();
        System.out.print("Client : "+s+"\n");
        if(s.equalsIgnoreCase("Bye"))
        break;
        }
        stdin.close();
        sout.close();
        client.close();
        sin.close();
    }

    static void Client() throws IOException {
        ServerSocket server=null;
        Socket client=null;
        try{
        server=new ServerSocket(8888);
        System.out.println("Anda telah online sebagai client");
        client=server.accept();
        System.out.println("Anda telah masuk dan bisa online");
        }
        catch(IOException e){
        System.out.println(e.getMessage());
        System.exit(-1);
        }
        System.out.println("Silahkan chat");
        InputStream masuk=client.getInputStream();
        OutputStream keluar=client.getOutputStream();
        BufferedReader in=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream out=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String pesan;
        while (true){
        pesan=in.readLine();
        if(pesan.equalsIgnoreCase("stop"))
        {
        out.println("sampai jumpa");
        break;
        }
        System.out.println("Server : "+pesan);
        System.out.print("Client : ");
        pesan=stdin.readLine();
        out.println(pesan);
        }
        server.close();
        client.close();
        in.close();
        out.close();
        stdin.close();
    }

    public static void main(String args[]) throws IOException {
        int pil;
    System.out.println("Menu Utama");
    System.out.println("1. Client");
    System.out.println("2. Server");
    System.out.println("3. Keluar");
    System.out.println();
    System.out.println("Masukkan Pilihan Anda : ");
    Scanner input = new Scanner(System.in);
        pil = Integer.parseInt(input.next());
    switch(pil){
        case 1:
        Client();
        break;
        case 2:
        Server();
        break;
        case 3:
        System.out.println();
        System.out.println("Terima Kasih Telah Menggunakan Aplikasi Ini");
        break;
        default :
        System.out.println("Maaf Keyword Yang Anda Masukkan Salah");
        break;
    }
    }
}

BoKom jelaskan sedikit dari program diatas :

import java.io.*;
import java.net.*;
import java.util.Scanner;

pada bagian ini program yang kita gunakan itu merupakan sebuah program yang membutuhkan input dan output data sehingga paket import java.io dalam program ini perlu diaktifkan. paket ini diaktifkan karena program yang kita buat tadi bukan merupakan program yang hanya sekedar menampilkan karakter saja melainkan program yang kita buat ini dapat menerima input data melalui perangkat io.

selanjutnya import java.net, karena program chatting ini menggunakan hubungan antara jaringan komunikasi maka kita perlu mengaktifkan paket tersebut sebab dalam program ini kita menggunakan ip address dalam menghubungkan antara server dan client.

kemudian import java.util.scanner, paket ini digunakan karena dalam program yang kita buat ini terdapat tampilan menunya. fungsi dari java util scanner ini yaitu mencocokkan nilai yang kita input kan terhadap menu pilihan. Tanpa adanya paket ini maka perintah untuk membuat menu tidak akan berjalan.


public class chat{
    static void Server() throws IOException {
        String ip;
        BufferedReader cmb=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Masukkan IP Client : ");
        ip=cmb.readLine();
        Socket client=null;
        client=new Socket(""+ip,8888);
        BufferedReader sin=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream sout=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String s;
        while (true){
        System.out.print("Server : ");
        s=stdin.readLine();
        sout.println(s);
        s=sin.readLine();
        System.out.print("Client : "+s+"\n");
        if(s.equalsIgnoreCase("Bye"))
        break;
        }
        stdin.close();
        sout.close();
        client.close();
        sin.close();
    }

    static void Client() throws IOException {
        ServerSocket server=null;
        Socket client=null;
        try{
        server=new ServerSocket(8888);
        System.out.println("Anda telah online sebagai client");
        client=server.accept();
        System.out.println("Anda telah masuk dan bisa online");
        }
        catch(IOException e){
        System.out.println(e.getMessage());
        System.exit(-1);
        }
        System.out.println("Silahkan chat");
        InputStream masuk=client.getInputStream();
        OutputStream keluar=client.getOutputStream();
        BufferedReader in=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream out=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String pesan;
        while (true){
        pesan=in.readLine();
        if(pesan.equalsIgnoreCase("stop"))
        {
        out.println("sampai jumpa");
        break;
        }
        System.out.println("Server : "+pesan);
        System.out.print("Client : ");
        pesan=stdin.readLine();
        out.println(pesan);
        }
        server.close();
        client.close();
        in.close();
        out.close();
        stdin.close();
    }

    public static void main(String args[]) throws IOException {
        int pil;
    System.out.println("Menu Utama");
    System.out.println("1. Client");
    System.out.println("2. Server");
    System.out.println("3. Keluar");
    System.out.println();
    System.out.println("Masukkan Pilihan Anda : ");
    Scanner input = new Scanner(System.in);
        pil = Integer.parseInt(input.next());
    switch(pil){
        case 1:
        Client();
        break;
        case 2:
        Server();
        break;
        case 3:
        System.out.println();
        System.out.println("Terima Kasih Telah Menggunakan Aplikasi Ini");
        break;
        default :
        System.out.println("Maaf Keyword Yang Anda Masukkan Salah");
        break;
    }
    }
}

ada perintah yang bernama "Public Class Chat " perintah ini menyatakan bahwa program yang kita buat ini disimpan dalam class yang bernama chat, jika kita ingin menyimpan program ini dengan nama yang lainnya jangan lupa di public class nya namanya juga harus dirubah sesuai dengan nama yang kita gunakan waktu menyimpan program nya.


   public static void main(String args[]) throws IOException {
        int pil;
    System.out.println("Menu Utama");
    System.out.println("1. Client");
    System.out.println("2. Server");
    System.out.println("3. Keluar");
    System.out.println();
    System.out.println("Masukkan Pilihan Anda : ");
    Scanner input = new Scanner(System.in);
        pil = Integer.parseInt(input.next());
    switch(pil){
        case 1:
        Client();
        break;
        case 2:
        Server();
        break;
        case 3:
        System.out.println();
        System.out.println("Terima Kasih Telah Menggunakan Aplikasi Ini");
        break;
        default :
        System.out.println("Maaf Keyword Yang Anda Masukkan Salah");
        break;
    }
    }


nah berikut ini merupakan potongan program yang digunakan sebagai tampilan menu dari program chatting ini. program ini merupakan program utama yang akan dieksekusi karena disana terdapat perintah " public static void main(String args[]) throws IOException { ", setelah perintah ini dieksekusi maka ia akan menampilkan tampilan menu seperti berikut :

 

Perintah "Scanner input = new Scanner(System.in)", perintah tersebut didalam program diatas ini digunakan untuk menscan input an yang dimasukkan melalui media I/O, yang mana akan dicocokkan dengan nilai yang terdapat dalam perintah switch. Disana terlihat bahwa jika nilai inputan bernilai 1 maka program akan mengeksekusi statement client, sedangkan jika inputan bernilai 2 maka program akan mengeksekusi statement server, kemudian jika inputan bernilai 3 maka program akan keluar.

nah dibawah ini merupakan potongan program yang terdapat pada bagian statement client,

static void Client() throws IOException {        ServerSocket server=null;
        Socket client=null;
        try{
        server=new ServerSocket(8888);
        System.out.println("Anda telah online sebagai client");
        client=server.accept();
        System.out.println("Anda telah masuk dan bisa online");
        }
        catch(IOException e){
        System.out.println(e.getMessage());
        System.exit(-1);
        }
        System.out.println("Silahkan chat");
        InputStream masuk=client.getInputStream();
        OutputStream keluar=client.getOutputStream();
        BufferedReader in=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream out=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String pesan;
        while (true){
        pesan=in.readLine();
        if(pesan.equalsIgnoreCase("stop"))
        {
        out.println("sampai jumpa");
        break;
        }
        System.out.println("Server : "+pesan);
        System.out.print("Client : ");
        pesan=stdin.readLine();
        out.println(pesan);
        }
        server.close();
        client.close();
        in.close();
        out.close();
        stdin.close();
    }

pada bagian perintah ini "server=new ServerSocket(8888);" perintah ini menyatakan bahwa server berada dalam port 8888, antara port client dan server ini harus sama agar keduanya dapat terhubung.

kemudian pada potongan program berikut ini menjelaskan bahwa,

        InputStream masuk=client.getInputStream();
        OutputStream keluar=client.getOutputStream();
        BufferedReader in=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream out=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));

program chatting ini tidak dapat melakukan pengiriman pesan secara serentak, karena antara client dan server harus menunggu terlebih dahulu balasan setelah mengirimkan pesan.

kemudian potongan berikut ini menyatakan bahwa

  if(pesan.equalsIgnoreCase("stop"))
        {
        out.println("sampai jumpa");
        break;
        }
        System.out.println("Server : "+pesan);
        System.out.print("Client : ");
        pesan=stdin.readLine();
        out.println(pesan);
        }
        server.close();
        client.close();
        in.close();
        out.close();
        stdin.close();

jika client mengirimkan pesan dengan bertuliskan "stop" maka perintah ini akan membuat client terputus koneksinya dengan server atau dengan kata lain client telah keluar dari percakapan.

selanjutnya berikut ini merupakan potongan program yang terdapat pada statement server

static void Server() throws IOException {
        String ip;
        BufferedReader cmb=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Masukkan IP Client : ");
        ip=cmb.readLine();
        Socket client=null;
        client=new Socket(""+ip,8888);
        BufferedReader sin=new BufferedReader(new
        InputStreamReader(client.getInputStream()));
        PrintStream sout=new PrintStream(client.getOutputStream());
        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
        String s;
        while (true){
        System.out.print("Server : ");
        s=stdin.readLine();
        sout.println(s);
        s=sin.readLine();
        System.out.print("Client : "+s+"\n");
        if(s.equalsIgnoreCase("Bye"))
        break;
        }
        stdin.close();
        sout.close();
        client.close();
        sin.close();
    }

pada bagian program berikut

        String ip;
        BufferedReader cmb=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Masukkan IP Client : ");
        ip=cmb.readLine();
        Socket client=null;
        client=new Socket(""+ip,8888);

menjelaskan bahwa pada saat statement server pertama kali dijalankan maka akan diminta untuk memasukkan ip dari client setelah nilai ip di input kan maka akan dihubungkan dengan ip server yang dituju setelah no ip yang dituju di temukan maka akan dicocokkan juga dengan no port nya apakah sama dengan no port yang ada pada client atau tidak, no port disana yaitu "8888" dan nilai nya sama seperti pada no port yang terdapat pada statement client.

kemudian pada potongan program berikut ini

       while (true){
        System.out.print("Server : ");
        s=stdin.readLine();
        sout.println(s);
        s=sin.readLine();
        System.out.print("Client : "+s+"\n");
        if(s.equalsIgnoreCase("Bye"))
        break;
        }
        stdin.close();
        sout.close();
        client.close();
        sin.close();

potongan program menjelaskan bahwa jika server mengirim pesan "Bye" maka itu akan membuat server mengakhiri percakapannya dengan client.

sekian penjelasan dari BoKom.. hidup BocahKomputer