Archive for May, 2007

chatting

Monday, May 7th, 2007

Sudah tidak asing lagi bagi kita tentang chating di internet. Mengobrol lewat internet itu

memang asyik dan menyenangkan sehingga tak jarang seseorang yang pergi ke warung internet

hanya untuk chating saja sampai berjam-jam. Dengan chating lewat internet anda bisa

mendapatkan banyak teman dari penjuru dunia. Hal keamanan merupakan faktor penting bagi

kita dalam berbagi informasi. Misalnya, jika bos kita ingin mendengar laporan kerja karyawan,

maka jika kita memberitahu dengan SMS lewat ICQ, email dan sebagainya serasa tidak efektif

bila kita menginginkan komunikasi dua arah yang saling bertemu dan menjamin keamanan

tinggi sehingga menciptakan suasana yang akrab dan nyaman.

Dalam hal ini anda bisa memakai program chating mIRC32, ICQ, dan sebagainya yang sudah

disediakan oleh warung internet. Apakah orang lain yang tidak diinginkan bisa menyusup dan

mengambil data kita?, tentu saja bisa. Sebab kebanyakan program chating justru memilih dari

segi kegunaan yang umum. Nah, sekarang kita akan mencoba membuat program chating yang

sangat berguna dan meningkatkan keamanan data sehingga mengurangi orang yang tidak

diinginkan masuk ke dalam forum kita dan ‘mencuri’ data kita.

Hal yang menarik disini adalah kita akan membuat sendiri program chating ini. Dalam hal

permrograman ini saya menggunakan bahasa java yang sudah kita kenal selama beberapa tahun

ini. Java adalah bahasa yang handal, mudah dipelajari bagi pengguna C++, rumus umum dasar

java menyerupai C++ dan ada juga yang tidak mirip, tetapi java lebih mengkhususkan diri

untuk

full

obyek.

1

memodifikasi port, kemananan dan sebagainya secara acak dari kedua program berikut yang

Listing programnya sebagai berikut :

1. Server mengirim data ke Client

// program server: simpan dalam ServerKu1.java

// kompile menjadi ServerKu1.class

import

java.net.*;

import

java.io.*;

public class

ServerKu1 {

public static

void

main(String[] args) {

try

{

ServerSocket ss =

new ServerSocket(2002

);

System.out.println(

"Menunggu Klien…"

);

Socket s = ss.accept();

System.out.println(

"Klien telah masuk"

);

System.out.println(

"Server pada port = "

+

s.getLocalAddress().getHostAddress() +

" : "

+ s.getLocalPort());

System.out.println(

"Client pada port = "

+

s.getInetAddress().getHostAddress() +

" : "

+ s.getPort());

PrintWriter pw =

new PrintWriter(s.getOutputStream(), true

);

BufferedReader br =

new BufferedReader(new

InputStreamReader(System.in));

String greeting =

""

;

while

(!(greeting=br.readLine()).equals(""

)) { pw.println(greeting); }

pw.close(); s.close(); ss.close();

}

catch

(Exception e) { e.printStackTrace(); }

// program klien : Simpan dalam ClientKu1.java

// kompile menjadi ClientKu1.class

import

java.net.*;

import

java.io.*;

public class

ClientKu1 {

public static

void

main(String[] args) {

try

{

Socket s =

new Socket("127.0.0.1",2002

);

System.out.println(

"Komunikasi terhubung"

);

System.out.println(

"Client pada port = "

+

s.getLocalAddress().getHostAddress() +

" : "

+ s.getLocalPort());

System.out.println(

"Server pada port = "

+

s.getInetAddress().getHostAddress() +

" : "

+ s.getPort());

BufferedReader br =

new BufferedReader( new

InputStreamReader(s.getInputStream()));

System.out.println(

"Menunggu pesan…"

);

String greeting =

""

;

while

((greeting=br.readLine())!=null

) { System.out.println(greeting); }

System.out.println(

"Selesai"

);

catch

(Exception e) { e.printStackTrace(); }

4

// program server : Simpan dalam ServerKu2.java

// kompile menjadi ServerKu2.class

import

java.net.*;

import

java.io.*;

public class

ServerKu2 {

public static

void

main(String args[]) {

int

port;

try

{

port = Integer.parseInt(args[

0

]);

catch

(Exception e) {

System.out.println(

"port = 2000 (Standarnya)"

);

port =

2000

;

try

{

server_socket =

new

ServerSocket(port);

System.out.println(

"Server menunggu klien di port "

+

// server mondar-mandir disini

while

(true

) {

Socket socket = server_socket.accept();

System.out.println(

"Hubungan baru diterima "

+

":"

+ socket.getPort());

input =

new BufferedReader(new

InputStreamReader(socket.getInputStream()));

// menampilakan data yang diterima

try

{

while

(true

) {

if

(message==null) break

;

catch

(IOException e) {

// Client menutup hubungan

try

{

socket.close();

System.out.println(

"Client telah menutup hubungan"

);

catch

(IOException e) {

5

6

// program client : Simpan dalam ClientKu2.java

// kompile menjadi ClientKu2.class

import

java.net.*;

import

java.io.*;

public class

ClientKu2 {

public static

void

main(String[] args) {

int

port = 2002

;

String server =

"localhost"

;

Socket socket =

null

;

int

ERROR = 1

;

// read arguments

if

(args.length == 2

) {

server = args[

0

];

try

{

port = Integer.parseInt(args[

1

]);

catch

(Exception e) {

System.out.println(

"server port = 1500 (Standarnya)"

);

port =

2002

;

// Koneksi ke server

try

{

socket =

new

Socket(server, port);

System.out.println(

"Terkoneksi ke server "

+

":"

+ socket.getPort());

catch

(UnknownHostException e) {

catch

(IOException e) {

try

{

input =

new BufferedReader(new

InputStreamReader(System.in));

output =

new PrintWriter(socket.getOutputStream(),true

);

7

Untuk mengkompile dan menjalankannya, maka ikuti langkah berikut :

.

Server ke Client

8

Setelah ClientKu1.class dijalankan maka anda bisa mengetikkan kalimat di jendela

Server dan akan di tampilkan di jendela klien. Untuk mengakhiri koneksi, anda bisa

menekan enter dua kali atau menutup dari jendela windows.

.

Client ke Server

9

2. Kompile ClientKu2.java :

C:\> javac ClientKu2.java

Jalankan program :

C:\> java ClientKu2

Output :

Setelah ServerKu2.class dan ClientKu2.class di jalankan, sekarang kesempatan

bagi anda untuk menulis pesan di klien dan nantinya akan di teruskan ke server.

10

11

Nah, sekarang adalah suatu tantangan bagi anda untuk menyatukan dua program ini menjadi

satu program saja. Selamat mencoba!.

1. Kompile ServerKu2.java :

C:\> javac ServerKu2.java

Jalankan program :

C:\> java ServerKu2

Output :

1. Kompile ServerKu1.java :

C:\> javac ServerKu1.java

Jalankan program :

C:\> java ServerKu1

Output :

2. Kompile ClientKu1.java :

C:\> javac ClientKu1.java

Jalankan program :

C:\> java ClientKu1

Output :

System.out.println(e);

System.exit(ERROR);

}

System.out.println(e);

System.exit(ERROR);

}

}

socket.getInetAddress() +

}

}

}

String lineToBeSent;

BufferedReader input;

PrintWriter output;

System.out.println(e);

}

System.out.println(e);

}

System.out.println(message);

}

}

String message = input.readLine();

socket.getInetAddress() +

server_socket.getLocalPort());

}

}

ServerSocket server_socket;

BufferedReader input;

}

}

2. Client mengirim data ke Server

br.close();

s.close();

}

}

}

menurut anda memiliki kehandalan.

Begini ceritanya, masing-masing server dan client akan menjalankan dua program. Lho kok dua

program?, karena saya akan menyajikan program yang mengirim data (tulisan) dari server ke

klien dan dari klien ke server. Jadi disini anda akan dihadapkan pada bagaimana menyatukan

dua program pada masing-masing computer sehingga masing-masing computer hanya

menjalankan satu program saja. Lebih efektif bukan?, untuk itulah anda bisa memilih dan