Exercise on Inner Class and Threading
Buatlah program java untuk chatting antar computer sebagai berikut
Package berisi kelas-kelas Socket dan Network Programming [disediakan]
Package berisi kelas-kelas model
Buatlah class ConnectionThread.java sebagai berikut
- Constructor throws IOException
- Constructor mengeset attribut client dan menginstansiasi objek Connection dengan input client
- Merupakan method yang dijalankan saat thread diaktifkan
- Thread akan aktif setiap ada Client baru yang terhubung ke Server
- Thread akan berhenti ketika Client mengirimkan pesan "quit"
- lakukan proses berikut dalam blok try-catch
- jalankan proses chatting dengan memanggil method startChat(String) dari objek connection
- tampilkan informasi Client yang terhubung dengan method getClientInformation dari Objek connection
- lakukan proses loop membaca inputan text dari client dengan memanggil method readStream() dari objek connection selama input readStream masih membaca dan input String bukanlah "quit"
- tampilkan pesan yang diterima dari client, dan kirimkan (broadcast) pesat tersebut ke client yang lain menggunakan method sendToAll() dari objek connection
- tampilkan pesan kepada semua client jika ada client yang keluar dari chat room, kemudian putuskan koneksi terhadap client tsb dengan memanggil method disconnect() dari object connection
- tambahkan pesan di blok catch untuk menampilkan pesan error
Buatlah class ConsoleApplication.java sebagai berikut
- extends Thread
- method run()
- lakukan proses berikut dalam blok try-catch
- Thread akan membaca input keyboard dari client dengan memanggil method inputString()
- Mengirimkan hasil input keyboard ke server melalui method writeStream() selama input dari client bukanlah kata "quit"
- tambahkan pesan di blok catch untuk menampilkan pesan error
- extends Thread
- method run()
- lakukan proses berikut dalam blok try-catch
- Thread akan menerima pesan yang dikirimkan dari server melalui method readStream()
- Menampilkan ke layar selama pesan dari server masih ada (bukan null)
- tambahkan pesan di blok catch untuk menampilkan pesan error
- lakukan proses berikut dalam blok try-catch
- Instansiasi objek ClientConnection
- Minta input alamat ip Server menggunakan method inputString()
- Koneksikan ip client ke server dengan memanggil method connect(ip)
- Instansiasi dan jalankan Thread ReadInput dan WriteInput
- tambahkan pesan di blok catch untuk menampilkan pesan error
Package berisi kelas view GUI dan controller
Buatlah class JFrame ChatView.java dengan tampilan sebagai berikut
- terdapat sebuah text area (txAreaChat)
- set editable text area = false (uncheck editable)
- tambahkan text "Input Server IP Address : " pada text area
- terdapat sebuah text field (txFieldChat)
- tambahkan method getTxFieldChat() yang mengembalikan objek text field txFieldChat
- tambahkan method getStringChat() yang mengembalikan String dari text field txFieldChat
- tambahkan method setTxFieldChat(String) yang mengeset String pada text field txFieldChat
- tambahkan method setTxAreaChat(String) yang menambahkan string pada baris baru pada text area txAreaChat
- import java.awt.event.ActionListener;
- tambahkan method addListener(ActionListener e)
- tambahkan add listener dengan memanggil method addActionListener pada text field txfieldChat
Buatlah class JChatController.java sebagai berikut
- buatlah class sesuai class diagram berikut
- class WriteOutput merupakan Inner Class
- import java.awt.event.ActionListener;
- kelas implements ActionListener
- implementasikan method actionPerformed(ActionEvent ae)
- Constructor menginstansiasi GUI view
- set visible view = true
- set lisener view dengan controller this
- set client = null
- extends Thread
- method run()
- lakukan proses berikut dalam blok try-catch
- Thread akan menerima pesan yang dikirimkan dari server melalui method readStream()
- Menampilkan pesan ke text area view selama pesan dari server masih ada (bukan null) menggunakan method setTxAreaChat
- tambahkan pesan di blok catch untuk menampilkan pesan error
- get Object source action event
- cek source action event
- jika event berasal dari text field (tekan tombol enter di text field), cek apakah client sudah terhubung
- jika client masih null
- lakukan proses berikut dalam blok try-catch
- instansiasi ClientConnection baru
- Terima string ip dari user dengan memanggil method getStringChat dari objek view
- Instansiasi dan jalankan objek WriteOutput
- tambahkan pesan di blok catch untuk menampilkan pesan error
- jika client sudah terbentuk (koneksi sudah terbentuk)
- terima input dari view menggunakan method getStringChat()
- kirimkan hasil input String ke server melalui method writeStream()
- hapus isi dari text field pada view menggunakan method setTxFieldChat
Package berisi kelas-kelas model
Buatlah class DriverServer.java sebagai berikut
- kelas memiliki main method (psvm)
- lakukan proses berikut dalam blok try-catch di dalam main method
- Instansiasi objek ServerConnection dan tampilkan informasi server dengan memanggil method getServerInformation()
- Lakukan perulangan untuk menjalankan ConnectionThread setiap server menerima Client baru
- Jalankan thread connection
- tambahkan pesan di blok catch untuk menampilkan pesan error
- Jalankan kelas DriverServer
Buatlah class DriverClient.java sebagai berikut
- kelas memiliki main method (psvm)
- instansiasi objek ConsoleApplication
- panggil method startChat dari objek ConsoleApplication
- Jalankan kelas DriverClientConsole
- hubungkan dengan IP server
- cobalah aplikasi chat console yang telah dibuat
Buatlah class DriverClientGui.java sebagai berikut
- kelas memiliki main method (psvm)
- instansiasi objek ChatController
- Jalankan kelas DriverClientGui
- hubungkan dengan IP server
- cobalah aplikasi chat Gui yang telah dibuat