Mar 062013
 

Sample UDP Client Server

Assalamu’ alaikum wr wb

User Datagram Protocol (UDP), adalah salah satu protokol lapisan transpor TCP/IP yang mendukung komunikasi yang tidak andal (unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan yang menggunakan TCP/IP. Protokol ini didefinisikan dalam RFC 768.

Oke mari langsung saja kita tulis script nya untuk sisi server

import java.io.*;
import java.net.*;

class UDPServer
{
 public static void main(String args[]) throws Exception
 {
 DatagramSocket serverSocket = new DatagramSocket(9876);
 byte[] receiveData = new byte[1024];
 byte[] sendData = new byte[1024];
 while(true)
 {
 //Deklarasi penerimaan paket
 DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
 serverSocket.receive(receivePacket);
 //Simpan dalam variabel dan cetak
 String sentence = new String( receivePacket.getData());
 System.out.println("RECEIVED: " + sentence);
 //Ambil Default IP yang mengirimkan pesan
 InetAddress IPAddress = receivePacket.getAddress();
 //Ambil port yang mengirimkan data
 int port = receivePacket.getPort();
 //Jadikan huruf besar data yang di terima
 String capitalizedSentence = sentence.toUpperCase();
 //Konvert data yang di terima menjadi byte data
 sendData = capitalizedSentence.getBytes();
 DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
 //Kirim kembali data yang terlah di terima
 serverSocket.send(sendPacket);
 }
 }
}

Sekarang untuk aplikasi client nya

import java.io.*;
import java.net.*;

class UDPClient
{
 public static void main(String args[]) throws Exception
 {
 //Baca Inputan keyboard
 BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
 //Deklarasi data paket
 DatagramSocket clientSocket = new DatagramSocket();
 //Lokasi server yang akan dikirim data
 InetAddress IPAddress = InetAddress.getByName("localhost");
 //Deklarasi port server
 int port = 9876;
 //Data yang akan di kirim
 byte[] sendData = new byte[1024];
 //data yang di terima dari server
 byte[] receiveData = new byte[1024];
 //Masukkan data darui keyboard ke variabel
 String sentence = inFromUser.readLine();
 try
 {
 //setting timeout
 clientSocket.setSoTimeout(1000);
 //Masukkan ke send data
 sendData = sentence.getBytes();
 //Inisialisasi paket yang di kirim
 DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
 //Kirim paket data
 clientSocket.send(sendPacket);

 //Ambil data yang di kirim oleh server
 DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
 clientSocket.receive(receivePacket);
 //Masukkan data yang di kirim oleh server
 //Konvert dari byte ke string
 String modifiedSentence = new String(receivePacket.getData());
 //Cetak ke layar
 System.out.println("FROM SERVER:" + modifiedSentence);

 }catch (SocketException | SocketTimeoutException EX){;
 System.out.println(EX.getMessage());
 }finally{
 //Tutup UDP
 clientSocket.close();
 }
 }
}

Selamat mencoba semoga membantu

Wassalamu’ alaikum wr wb

Feb 262013
 

Try Icon java SWT 

Assalamu’ alaikum wr wb

Beberapa waktu lama saya menulis tentang komponent untuk membuat report pada swt http://sugik.do-event.com/?p=656, Kali ini saya akan berbagi bagaimana membuat try icon pada aplikasi java swt, Langsung saja berikut souce nya

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Display display = new Display();
		final Shell shlSmsSender = new Shell(display);
		shlSmsSender.setText("SMS Sender");
		Image image = new Image(display, 16, 16);
		final Tray tray = display.getSystemTray();
		if (tray == null) {
			System.out.println("The system tray is not available");
		} else {
			final TrayItem item = new TrayItem(tray, SWT.NONE);
			item.setToolTipText("SWT TrayItem");
			item.addListener(SWT.Show, new Listener() {
				public void handleEvent(Event event) {
					System.out.println("show");
				}
			});
			item.addListener(SWT.Hide, new Listener() {
				public void handleEvent(Event event) {
					System.out.println("hide");
				}
			});
			item.addListener(SWT.Selection, new Listener() {
				public void handleEvent(Event event) {
					System.out.println("selection");
				}
			});
			item.addListener(SWT.DefaultSelection, new Listener() {
				public void handleEvent(Event event) {
					System.out.println("default selection");
				}
			});

			final Menu menu = new Menu(shlSmsSender, SWT.POP_UP);

			MenuItem misend = new MenuItem(menu, SWT.PUSH);
			misend.setText("Kirim Manual");
			misend.setImage(new Image(display, "icon/send.png"));
			misend.addListener(SWT.Selection, new Listener() {
				public void handleEvent(Event event) {
					System.out.println("selection " + event.widget);
				}
			});

			MenuItem miLog = new MenuItem(menu, SWT.PUSH);
			miLog.setText("Tampilkan Log");
			miLog.setImage(new Image(display, "icon/log.png"));
			miLog.addListener(SWT.Selection, new Listener() {
				public void handleEvent(Event event) {
					System.out.println("selection " + event.widget);
				}
			});

			MenuItem miexit = new MenuItem(menu, SWT.PUSH);
			miexit.setText("Keluar");
			miexit.setImage(new Image(display, "icon/exit.png"));
			miexit.addListener(SWT.Selection, new Listener() {
				public void handleEvent(Event event) {
					System.exit(0);
				}
			});

			menu.setDefaultItem(misend);

			item.addListener(SWT.MenuDetect, new Listener() {
				public void handleEvent(Event event) {
					menu.setVisible(true);
				}
			});
			item.setImage(new Image(display, "icon/hp.png"));
		}
		// shell.setBounds(50, 50, 300, 200);
		// shell.open();
		while (!shlSmsSender.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		image.dispose();
		display.dispose();
	}
}

Untuk menambahkan icon anda buat folder icon di project anda dan taruh file gambar di sana.

oke selamat mencoba semoga membantu

Wassalamu’ alaikum wr wb

Nov 162012
 

Assalamu’ alaikum wr wb

swt report (T-Report)

Satu lagi sebuah project iseng yang mungkin bisa di kembangkan oleh semuanya, saya mempunyai ide untuk mencetak html sebagai report, tapi mungkinmasih banyak kekurangan.

untuk lebih detail tentang project ini silakan di download di https://bitbucket.org/mbahsomo/t-swt-report

Ini adalah hasilnya :

SWT Report

SWT Report

Wassalamu’ alaikum wr wb

Oct 082012
 

Assalamu’ alaikum wr wb

Replace char on swt (Membaatasi input keyboard dalam swt Text)

Eclipse

Terkadang kita saat membuat text input pada sebuah aplikasi kita ingin hanya membutuhakan bis diisi dengan number saja, atau mungkin bisa number atau huruf tanpa ada karakter – karakter khusus yang dapat masuk.

Dulu saya pernah membuat tutorial dengan menggunakan swing , tetapi karena pekerjaan saya sekarang sedang banyak menggunakan swt(Standart Widget Toolkit) milik dari IBM atau Eclipse. Selain tentang membaatasi text saya juga akan menunjukkan bagaimana caranya membuat class turunan dari swt widget.

Sebenarnya saya ada sedikit maslah yang mungkin ada alami juga saat membuat class turunan dari swt widget. saat kita kompile akan muncul error seperti di bawah ini :

Exception in thread “main” org.eclipse.swt.SWTException: Subclassing not allowed

Untuk menutup error pada masalah diatas tambahkan metod checkSubclass  pada class turunan yang anda buat.

Berikut adalah script untuk batasi text dan Pembuatan class turunan dari Text Widget

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;

public class TextFormat extends org.eclipse.swt.widgets.Text{
	public TextFormat(Composite parent, int style) {
		super(parent, style);
		setFormat();
	}
	@Override
	protected void checkSubclass() {
	}
	private void setFormat(){
		this.addListener(SWT.Verify, new Listener() {
			public void handleEvent(Event e) {
				String string = e.text;
				char[] chars = new char[string.length()];
				string.getChars(0, chars.length, chars, 0);
				for (int i = 0; i < chars.length; i++) {
					if (('a'<= chars[i] && chars[i] <= 'z'
							|| '0' <= chars[i] && chars[i] <= '9'
							|| 'A'<= chars[i] && chars[i] <= 'Z')==false) {
						e.doit = false;
						return;
					}
				}
			}
		});
	}
}

Oke semoga membantu dan semoga dapat di kembangkan.

Wassalamu’ alaikum wr wb

Oct 052012
 

Assalau’ alaikum wr wb

Direct Print swt (Standard Widget Toolkit)

Eclipse

Ini adalah salah satu trik pada pembuatan program java swt, kalo tutorial saya yang menggunakan swing saat melakukan print direct langsung ke LPT1, tetapi saat printer tidak menggunakan LPT1 maka kita harus menggunakan teknik lain, salah satunya adalah dengan menggunakan class Pritner.

Berikut adalah contoh penggunakan script Priter pada swt .

package coba;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.printing.Printer;

public class CobaCetak {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Printer printer = new Printer();
	    if (printer.startJob("SWT Printing ")) {
	      Color black = printer.getSystemColor(SWT.COLOR_BLACK);
	      GC gc = new GC(printer);
	      if (printer.startPage()) {
	        gc.setForeground(black);
	        String testString = "Coba Print";
	        gc.drawString(testString, 20, 20);
	        gc.drawString(testString, 20, 120);
	        gc.drawString(testString, 20, 220);
	        gc.drawString(testString, 20, 320);
	        printer.endPage();
	      }
	      gc.dispose();
	      printer.endJob();
	    }
	    printer.dispose();
	}

}

Oke semoga script sederhana diatas dapat bermanfaat buat kitq semua.

Wassalamu’ alaikum wr wb

Jun 212012
 

Assalamu’ alaikum wr wb

Kali  ini kita akan mebuat sebuah script untuk mengeksekusi command dalam source java.

/*
*
* Desain by t-team
* email   : mbahsomo@do-event.com
* website : http://www.do-event.com
* ===============================================================
*     Semua sorce dalam program ini dibawah license [GPL]
*     Silakan Untuk mengembangkan dan memperbanyak source ini
*     Dengan tidak menghilangkan nama pembuat
* ===============================================================
*/
package tproject.util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
*
* @author sugik
*/
public class execToString {
public execToString(String cmdline) {
try {
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmdline);
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = null;
while ((line = input.readLine()) != null) {
System.out.println(line);
}
int exitVal = pr.waitFor();
System.out.println(&quot;Exited with error code &quot; + exitVal);
} catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
}
}
public static void main(String[] arg) {
new execToString(&quot;ping google.com&quot;);
}
}

Wassalamu’ alaikum wr wb

Jul 112011
 

Assalamu’ alaikum wr wb

Satu lagi theme untuk java yang bisa teamn – teman gunakan, untuk mempercantik tampilan java kalian. http://www.randelshofer.ch/quaqua/index.html, berikut tampilannya.

Untuk menggunakan silakan gunakan script seperti berikut :


try {
 JFrame.setDefaultLookAndFeelDecorated(true);
 JFrame.setDefaultLookAndFeelDecorated(true);
 JDialog.setDefaultLookAndFeelDecorated(true);
 UIManager.setLookAndFeel(ch.randelshofer.quaqua.QuaquaManager.getLookAndFeel());
 } catch (Exception e) {

 }

Ok Silakan di explore

wassalamu’ alaikum wr wb