Pada postingan kali ini akan membahas mengenai aplikasi Client-Server dengan menggunakan satu buah komputer sebagai client maupun server. Dibawah ini terdapat dua buah listing program yang akan digunakan sebagai Server dan sebagai Client.
Listingan InfoServer
import java.net.*; import java.io.*; import java.net.*; import java.util.*; public class InfoServer { private final int INFO_PORT=50000; private String datafromClient; public InfoServer() { BufferedReader inFromClient; DataOutputStream outToClient; Socket serverSocket; try { ServerSocket infoServer =new ServerSocket(INFO_PORT); System.out.println("Server telah siap"); while (true) { serverSocket = infoServer.accept(); System.out.println("Ada client " +"yang terkoneksi!"); inFromClient =new BufferedReader(new InputStreamReader(serverSocket.getInputStream())); outToClient =new DataOutputStream(serverSocket.getOutputStream()); outToClient.writeBytes("InfoServer versi 0.1\n"+"hanya untuk testing..\n"+"Silahkan berikan perintah TIME | NET | QUIT\n"); boolean isQUIT = false; while (!isQUIT) { datafromClient = inFromClient.readLine(); if (datafromClient.startsWith("TIM")) { outToClient.writeBytes(new Date().toString() + "\n"); } else if (datafromClient.startsWith("NET")) { outToClient.writeBytes(InetAddress.getByName("localhost").toString() +"\n"); } else if (datafromClient.startsWith("QUIT")) { isQUIT = true; } } outToClient.close(); inFromClient.close(); serverSocket.close(); System.out.println("Koneksi client tertutup.."); } } catch (IOException ioe) { System.out.print("error: " + ioe); } catch (Exception e) { System.out.print("error: " + e); } } public static void main(String[] args) { new InfoServer(); } }
Listing diatas merupakan listing program yang digunakan sebagai server yang akan dihidupkan untuk dapat melakukan komunikasi antar client dengan server. Pada sisi server ketika listing program diatas dijalankan maka akan menampilkan info "Server telah siap" dan ketika ada client yang masuk maka akan ada pemberitahuan "Ada client yang terkoneksi". Pada sisi client akan muncul tampilan pilihan yang dimiliki oleh server yaitu TIME | NET | QUIT ketika client memilih NET maka dari sisi server akan memanggil IP dari komputer dan di tampilkan pada sisi client, berlaku untuk TIME, sedangkan untuk QUIT, ketika pada sisi Client memilih QUIT maka pada sisi server akan berhenti atau server mati. Output nya akan terlihat seperti pada gambar dibawah ini
Listing InfoClient
import java.net.*; import java.net.*; import java.io.*; import java.util.*; public class InfoClient { private final int INFO_PORT=50000; private final String TargetHost = "localhost"; private final String QUIT = "QUIT"; public InfoClient() { try { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket(TargetHost,INFO_PORT); DataOutputStream outToServer =new DataOutputStream(clientSocket.getOutputStream()); BufferedReader inFromServer =new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); System.out.println(inFromServer.readLine()); System.out.println(inFromServer.readLine()); System.out.println(inFromServer.readLine()); System.out.println(""); boolean isQuit = false; while (!isQuit) { System.out.print("Perintah Anda : "); String cmd = inFromUser.readLine(); cmd = cmd.toUpperCase(); if (cmd.equals(QUIT)) { isQuit = true; } outToServer.writeBytes(cmd + "\n"); String result = inFromServer.readLine(); System.out.println("Dari Server: " + result); } outToServer.close(); inFromServer.close(); clientSocket.close(); } catch (IOException ioe) { System.out.println("Error:" + ioe); } catch (Exception e) { System.out.println("Error:" + e); } } public static void main(String[] args) { new InfoClient(); } }
Lisring diatas merupakan listing program yang digunakan untuk sisi client. Client dapat berjalan ketika server telah hidup, client akan diberitahu ketika server telah hidup dan akan meminta client untuk memilih TIME untuk menunjukkan waktu, NET untuk melihat host dari komputer dan QUIT untuk berhenti dari program dan mematikan server. Maka akan tampil output seperti gambar dibawah ini