0% menganggap dokumen ini bermanfaat (1 suara)
40 tayangan12 halaman

Aplikasi Chat Sederhana dengan RMI

Ringkasan dokumen tersebut adalah sebagai berikut: Dokumen tersebut membahas tentang pembuatan aplikasi chatting sederhana menggunakan Remote Method Invocation (RMI) dalam bahasa pemrograman Java. Terdiri dari bagian client dan server, dimana server dapat menerima koneksi dari beberapa client secara bersamaan dan mengirimkan pesan antar client.
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (1 suara)
40 tayangan12 halaman

Aplikasi Chat Sederhana dengan RMI

Ringkasan dokumen tersebut adalah sebagai berikut: Dokumen tersebut membahas tentang pembuatan aplikasi chatting sederhana menggunakan Remote Method Invocation (RMI) dalam bahasa pemrograman Java. Terdiri dari bagian client dan server, dimana server dapat menerima koneksi dari beberapa client secara bersamaan dan mengirimkan pesan antar client.
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

PEMROGRAMAN JARINGAN

APLIKASI CHATING DENGAN REMOTE METHODE


INVOCATION

OLEH : KELOMPOK

MUHAMMAD MAPPANYOMPA

H13114306

MIFTAH FARID

H13114308

JONATHAN HANS
H13114320

PROGRAM STUDI ILMU KOMPUTER


DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS HASANUDDIN
MAKASSAR
2016

Aplikasi Chat sederhana dengan RMI :


RMI adalah salah satu bagian dari J2SE yang digunakan untuk
membangun aplikasi terdistribusi menggunakan bahasa Java. RMI adalah
kumpulan kelas dalam Java yang digunakan untuk menangani
pemanggilan (invocation) method secara jarak jauh (remote) dalam suatu
jaringan atau Internet.

Pertama : Membuat Project di IDE Java yang terdiri dari :


-Chat Client
-Chat Server

1. Bagian Server
Membuat Interface baru dengan nama ChatServerInt
ChatServer> New> Interface

Untuk kelas Interface kita namakan : ChatServerInt


import [Link].*;
import [Link].*;
public interface ChatServerInt extends Remote{
public boolean login (ChatClientInt a)throws RemoteException ;
public void publish (String s)throws RemoteException ;
public Vector getConnected() throws RemoteException ;
}
Penjelasan :
ChatServerInt ini dibuat untuk pemebentukan interface di kelas Server
dimana akan digunakan nantinya sebagai RMI dari program yang akan
dibuat.

Buat Interface baru dengan nama : ChatClientInt


ChatServer> New> Interface. Berikut syntax Interface :
import [Link].*;
public interface ChatClientInt extends Remote{
public void tell (String name)throws RemoteException ;
public String getName()throws RemoteException ;
}
Penjelasan :
ChatClientInt ini dibuat untuk pemebentukan interface di kelas Client
dimana akan digunakan nantinya sebagai RMI dari program yang akan
dibuat.
Membuat kelas ChatServer dalam ChatServer: ChatServer
import [Link].*;
import [Link];
import [Link].*;
public class ChatServer extends UnicastRemoteObject implements
ChatServerInt{
private Vector v=new Vector();
public ChatServer() throws RemoteException{}
public boolean login(ChatClientInt a) throws RemoteException{
[Link]([Link]() + " got connected....");
[Link]("You have Connected successfully.");
publish([Link]()+ " has just connected.");
[Link](a);
return true;
}
public void publish(String s) throws RemoteException{
[Link](s);
for(int i=0;i<[Link]();i++){
try{
ChatClientInt tmp=(ChatClientInt)[Link](i);
[Link](s);
}catch(Exception e){
//problem with the client not connected.
//Better to remove it
}
}

}
public Vector getConnected() throws RemoteException{
return v;
}
}

Penjelasan :

Pada fungsi login akan dicetak Username dari user yang sudah
terkoneksi dengan server, lalu server akan memberitahu "You have
Connected successfully." di client. Setelah itu server akan mempublish ke seluruh
client Username yang baru terhubung dengan server, dan Username akan
ditambahkan ke dalam vector yang dibuat. Dan hasil pengembalian nilai berupa true.
Pada prosedur publish akan mencetak Username yang baru
terhubung ke server ke semua client.

Membuat kelas dalam projek ChatServer dengan nama


: [Link] Sintaks StartServer
1
2
3
4
5
6
7

import [Link].*;
import [Link].*;
public class StartServer {
public static void main(String[] args) {
try {
//[Link](new
RMISecurityManager());
[Link](1099);

8
9
10
11
12
13
14
15
16
}
17 }

ChatServerInt b=new ChatServer();


[Link]("rmi://[Link]/myabc", b);
[Link]("[System] Chat Server is ready.");
}catch (Exception e) {
[Link]("Chat Server failed: " + e);
}

Penjelasan :
Pada kelas utama akan di Registry pada port 1099 dan akan digunakan
server dengan penggunaan [Link]("rmi://[Link]/myabc", b);
yang berarti server pada IP [Link]. Dan setelah server disetting seperti yang diatas
maka akan dicetak [System] Chat Server is ready. Yang menendakan bahwa server
sudah siap digunakan. Sedangkan jika tecetak Chat Server failed: berarti terjadi kesalahan
pada port ataupun ip server yang disetting.

2. Client
Membuat Projek Client dengan nama : ChatClientProj

Membuat Interface dengan nama : ChatClientInt dalam projek


ChatClientProj
Membuat Interface dengan nama : ChatServerInt dalam projek
ChatClientProj
Membuat Kelas baru : ChatClient pada projek ChatClientProj

Kelas ChatClient :
1
2
3
4

import [Link].*;
import [Link];
public class ChatClient extends UnicastRemoteObject implements
ChatClientInt{

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 }

private String name;


private ChatUI ui;
public ChatClient (String n) throws RemoteException {
name=n;
}
public void tell(String st) throws RemoteException{
[Link](st);
[Link](st);
}
public String getName() throws RemoteException{
return name;
}
public void setGUI(ChatUI t){
ui=t ;
}

Penjelasan :

Pada Konstruktor ChatClient disini akan di gunakan operator


penugasan = untuk memberikan nilai pada variabel lokal name
dengan nilai n.
Pada Prosedur tell berfungsi untuk mencetak pemberitahuan bahwa
user sudah terhubung ke server dan sudah dapat melakukan
aktivitas chatting.
Pada Fungsi getName berfungsi untuk mengembalikan nilai nama.
Pada Prosedur setGUI berfungsi untuk menset tampilan interface.

Membuat Kelas ChatUI dalam projek dalam projek ChatClientProj


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

import [Link].*;
import [Link].*;
import
import
import
import

[Link].*;
[Link].*;
[Link];
[Link].*;

public class ChatUI{


private ChatClient client;
private ChatServerInt server;
public void doConnect(){
if ([Link]().equals("Connect")){
if ([Link]().length()<2)
{[Link](frame, "You need to type a name.");
return;}
if ([Link]().length()<2){[Link](frame,
"You need to type an IP."); return;}
try{
client=new ChatClient([Link]());
[Link](this);
server=(ChatServerInt)[Link]("rmi://"+[Link]()+"/myabc");
[Link](client);
updateUsers([Link]());
[Link]("Disconnect");
}catch(Exception e)
{[Link]();[Link](frame, "ERROR, we
wouldn't connect....");}
}else{
updateUsers(null);
[Link]("Connect");
//Better to implement Logout ....
}
}
public void sendText(){
if ([Link]().equals("Connect")){
[Link](frame, "You need to connect
first."); return;
}
String st=[Link]();
st="["+[Link]()+"] "+st;
[Link]("");
//Remove if you are going to implement for remote invocation
try{
[Link](st);
}catch(Exception e){[Link]();}
}
public void writeMsg(String st){ [Link]([Link]()+"\n"+st); }

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

public void updateUsers(Vector v){


DefaultListModel listModel = new DefaultListModel();
if(v!=null) for (int i=0;i<[Link]();i++){
try{ String tmp=((ChatClientInt)[Link](i)).getName();
[Link](tmp);
}catch(Exception e){[Link]();}
}
[Link](listModel);
}
public static void main(String [] args){
[Link]("Hello World !");
ChatUI c=new ChatUI();
}
//User Interface code.
public ChatUI(){
frame=new JFrame("Group Chat");
JPanel main =new JPanel();
JPanel top =new JPanel();
JPanel cn =new JPanel();
JPanel bottom =new JPanel();
ip=new JTextField();
tf=new JTextField();
name=new JTextField();
tx=new JTextArea();
connect=new JButton("Connect");
JButton bt=new JButton("Send");
lst=new JList();
[Link](new BorderLayout(5,5));
[Link](new GridLayout(1,0,5,5));
[Link](new BorderLayout(5,5));
[Link](new BorderLayout(5,5));
[Link](new JLabel("Your name: "));[Link](name);
[Link](new JLabel("Server Address: "));[Link](ip);
[Link](connect);
[Link](new JScrollPane(tx), [Link]);
[Link](lst, [Link]);
[Link](tf, [Link]);
[Link](bt, [Link]);
[Link](top, [Link]);
[Link](cn, [Link]);
[Link](bottom, [Link]);
[Link](new EmptyBorder(10, 10, 10, 10) );
//Events
[Link](new ActionListener(){
public void actionPerformed(ActionEvent e){ doConnect(); } });
[Link](new ActionListener(){
public void actionPerformed(ActionEvent e){ sendText(); } });
[Link](new ActionListener(){
public void actionPerformed(ActionEvent e){ sendText(); } });
[Link](main);
[Link](600,600);

100
101
102
103
104
105
106
107 }

[Link](true);
}
JTextArea tx;
JTextField tf,ip, name;
JButton connect;
JList lst;
JFrame frame;

Penjelasan :

Pada Prosedur doConnect akan dilakukan penghubungan client dan


server dimana jika sudah terconnect maka akan di cek apakah
username sudah di isi atau belum (minimal 3 karakter) dan IP
address sudah di isi atau belum. Jika Terjadi kesalahan pada
pengisian IP address maka akan dimunculkan dialog ERROR, we
wouldn't connect....
Pada Prosedur sendText ini akan di cetak text yang sudah kita tulis
untuk client lain dengan menggunakan prosedur publish dengan
syarat client sudah terhubung ke server.
Pada Prosedur writeMsg berfungsi untuk mencetak pesan pada
pesan dialog.
Pada Prosedur updateUser berfungsi untuk menampilkan list user
yang terhubung ke server melalui list vector yang ditambahkan
pada saat user terhubung ke server.
Pada main method akan dicetak Hello World ! lalu membuat objek
untuk menjalankan program chatting yang tadi sudah dibuat
dengan tampilan GUI.

Simulasi Program :
Menjalankan Server :
Server dijalankan melalui kelas StartServer :
Penentuan server address harus di tentukan sesuai dengan alamat IP :

Server address di sesuaikan :


[Link]("rmi://[Link]/myabc", b);
Ketika kelas telah di jalankan maka akan timbul sebuah pesan koneksi :

Kemudian menjalankan ChatUI dalam projek Client :

Anda mungkin juga menyukai