Command Line Chatting dengan JAVA

Command Line Chatting  dengan JAVA



Postingan ini ditulis sehubungan adanya Tugas Kuliah dari Pak Jack dalam Matakuliah Pemrograman Jaringan, Tugas ini adalah Memodifikasi Program Chat Java Berbasis Command Line yang di Download agar ada log/history dari Chat masing-masing user. Untuk kali ini Kelompok kami memodifikasi agar Log/History bisa tersimpan dalam DBMS, DMBS yang digunakan adalah Mysql.


1. Download Source Code Java non Koneksi DBMS Mysql

disini

2. Koneksi Database Mysql-Java dengan mysql-connector-java-3.1.14-bin.jar bisa di download

disini

3. Buat Database yang nantinya untuk menyimpan Log/History


> create database chat;
> use chat;
> create table chat(user varchar(50), message varchar(100), time datetime);


atau bisa didownload disini

4. Modifikasi Program Server.java :

- Tambahkan Header berikut :

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
- Tambahkan Deklarasi Variabel untuk Koneksi Database Mysql :

Connection conn = null;

        String dbUserName = "root"; // MySQL database username
        String dbPassword = "abi"; // MySQL database password
        String dbUrl = "jdbc:mysql://localhost/chat";


- Tambahkan Test Koneksi ke Database :

        try {
            Class forNam = Class.forName("com.mysql.jdbc.Driver");

            try {
                forNam.newInstance();
            } catch (InstantiationException ex) {
                Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        }
         try {
            conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
            System.out.println("Database connection establish...!");

       
        } catch (SQLException ex) {
            System.out.println("Cannot connect to database server...!!");
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        } 

- Tambahkan Methode untuk Memasukan Log/History/Chat/Message kedalam Database, contoh : Method Insert dengan Parameter String

public void insert(String x) {
       

            // try to close the connection
            try {
                                conn = DriverManager.getConnection("jdbc:mysql://localhost/chat","root","abi");

                                Statement st = conn.createStatement();
                                String insertSql = "INSERT chat VALUES('"+username+"','"+x+"','" + sdf.format(new Date()) + "')";
                                         int val = st.executeUpdate(insertSql);

                            } catch (SQLException ex) {
                                System.out.println("Cannot connect to database server...!!");
                                Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
                            }
           
        }

- Tambahkan perintah untuk memanggil Methode tersebut,
1. jalankan Methode saat user login :

class ClientThread extends Thread {
- - - - - -
          ClientThread(Socket socket) {
            insert "Telah Terkoneksi");
}
}


2. jalankan Methode saat User mengirim message :

public void run() {
     - - - - - - -
                case ChatMessage.MESSAGE:
                    broadcast(username + ": " + message);
                    //------------------------------
                        insert(message);
                    //------------------------------
                    break;

3. jalankan Methode saat User logout :

public void run() {
     - - - - - - -
                case ChatMessage.LOGOUT:
                   display(username + " disconnected with a LOGOUT message.");
                    keepGoing = false;
                    insert("disconnected with a LOGOUT message");
                    break;

- Rubah Juga Tipe Format Date menjadi Tanggal dan Jam:

public Server(int port, ServerGUI sg) {
        // GUI or not
        this.sg = sg;
        // the port
        this.port = port;
        // to display hh:mm:ss
        sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        // ArrayList for the Client list
        al = new ArrayList<ClientThread>();
    }


Hasil :

# java Server


misal
IP Server : 192.168.88.168
port : 1500

# java Client abby 1500 192.168.88.168 :


dan Respon Server :


hasil Hostory yang masuk ke Database :



# java Client dono 1500 192.168.88.168 :


Respon user abby dan server :








Penjelasan :








Nanti Lagi nulisnya ...   


EmoticonEmoticon