Membuat program chat socket menggunakan JAVA

pertama buat file server.java

tulis program berikut:

import java.io.*;
import java.net.*;
import java.lang.*;
public class Server {
 public static void main(String[] args) throws IOException {
  final int port = 444;
  System.out.println("**************************************************");
  System.out.println("*  Aplikasi Chatting Java Melalui Command Line   *");
  System.out.println("**************************************************");
  System.out.println("*               TEKNIK KOMPUTER                  *");
  System.out.println("*             @                                  *");
  System.out.println("*                 @                              *");
  System.out.println("**************************************************");
  System.out.println("*Ketikkan Pesan dengan kata 'exit' untuk keluar  *");
  System.out.println("**************************************************");
  System.out.println("   Server Menunnggu Koneksi Pada Port = "+port   );
  System.out.println("**************************************************");


   ServerSocket ss = new ServerSocket(port);
  Socket clientSocket = ss.accept();
  System.out.println("Server Menerima Koneksi Dari "+clientSocket.getInetAddress()+" on port "+clientSocket.getPort());
  RecieveFromClientThread recieve = new RecieveFromClientThread(clientSocket);
  Thread thread = new Thread(recieve);
  thread.start();
  SendToClientThread send = new SendToClientThread(clientSocket);
  Thread thread2 = new Thread(send);
  thread2.start();
 }}
class RecieveFromClientThread implements Runnable
{
 Socket clientSocket=null;
 BufferedReader brBufferedReader = null;

  public RecieveFromClientThread(Socket clientSocket)
 {
  this.clientSocket = clientSocket;
 }
 public void run() {
  try{
  brBufferedReader = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));

   String messageString;
  while(true){
  while((messageString = brBufferedReader.readLine())!= null){
   if(messageString.equals("EXIT"))
   {
    break;
   }
   System.out.println("Pesan Client: " + messageString);
   System.out.println("Kirim Pesan Anda: ");
  }
  this.clientSocket.close();
  System.exit(0);
 }

  }
 catch(Exception ex){System.out.println(ex.getMessage());}
 }
}
class SendToClientThread implements Runnable
{
 PrintWriter pwPrintWriter;
 Socket clientSock = null;

  public SendToClientThread(Socket clientSock)
 {
  this.clientSock = clientSock;
 }
 public void run() {
  try{
  pwPrintWriter =new PrintWriter(new OutputStreamWriter(this.clientSock.getOutputStream()));

   while(true)
  {
   String msgToClientString = null;
   BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

    msgToClientString = input.readLine();

    pwPrintWriter.println(msgToClientString);
   pwPrintWriter.flush();
   System.out.println("Kirim Pesan Anda:");

   if(msgToClientString.equals("exit"))
  break;
  }
  clientSock.close();}catch(Exception ex){System.out.println(ex.getMessage());}
 }
}


kemudian kita buat Client.java

code :
import java.io.*;
import java.net.Socket;
public class Client {
  private static Socket sock = null;
 public static void main(String[] args)
 {
     // The default port.
      int portNumber = 444;
      // The default host.
      String host = "127.0.1.1";

      if (args.length < 2) {
     System.out.println("***********************************************************************");
        System.out.println("*            Jika Melakukan Koneksi Dari Komputer Lain                *");
        System.out.println("*  Gunakan Perintah: java Client \n   *");
     System.out.println("***********************************************************************");

      } else {
        host = args[0];
        portNumber = Integer.valueOf(args[1]).intValue();
    }
  try {
       sock = new Socket(host, portNumber);
   SendThread sendThread = new SendThread(sock);
   Thread thread = new Thread(sendThread);thread.start();
   RecieveThread recieveThread = new RecieveThread(sock);
   Thread thread2 =new Thread(recieveThread);thread2.start();
  } catch (Exception e) {System.out.println(e.getMessage());}
 }
}
class RecieveThread implements Runnable
{
 Socket sock=null;
 BufferedReader recieve=null;

 public RecieveThread(Socket sock) {
  this.sock = sock;
 }//end constructor
 public void run() {
  try{
  recieve = new BufferedReader(new InputStreamReader(this.sock.getInputStream()));//get inputstream
  String msgRecieved = null;
  while((msgRecieved = recieve.readLine())!= null)
  {
   System.out.println("Dari Server: " + msgRecieved);
   System.out.println("Kirim Pesan Anda:");
  }
  }catch(Exception e){System.out.println(e.getMessage());}
 }//end run
}//end class recievethread
class SendThread implements Runnable
{
 Socket sock=null;
 PrintWriter print=null;
 BufferedReader brinput=null;

 public SendThread(Socket sock)
 {
  this.sock = sock;
 }//end constructor
 public void run(){
  try{
  if(sock.isConnected())
  {
   System.out.println("***********************************************************************");
   System.out.println("         Client connected to "+sock.getInetAddress() + " on port "+sock.getPort());
   System.out.println("***********************************************************************");
   System.out.println("*           Ketikkan Pesan dengan kata 'exit' untuk keluar            *");
   System.out.println("***********************************************************************");
   this.print = new PrintWriter(sock.getOutputStream(), true);
  while(true){
   System.out.println("Kirim Pesan Anda:");
   brinput = new BufferedReader(new InputStreamReader(System.in));
   String msgtoServerString=null;
   msgtoServerString = brinput.readLine();
   this.print.println(msgtoServerString);
   this.print.flush();

   if(msgtoServerString.equals("exit"))
   break;
   }//end while
  sock.close();}}catch(Exception e){System.out.println(e.getMessage());}
 }//end run method
}//end class


untuk menjalanjan program:

buka cmd.

- masuk ke direktori tempat kita menyimpan file server dan client.
- Compile file Server dan client dengan perintah
- javac Server.java dan javac Client.java

kemudian jalankan Server chat

- ketikan: java Server
- ketikan : java Client (Untuk membuka client)
- bila menjalanjan Client di komputer lain
-ketikan : java Client(spasi)ip_server(spasi)PORT


Semoga bermanfaat.

Comments

Popular Posts