Pada postingan kali ini saya akan membahas tentang aplikasi server dan client dengan metode POST. Disini kita membutuhkan 2 buah program. Yang pertama saya beri nama InfoServer.java dan InfoClient.java.
Kode program untuk InfoServer.java
import java.io.*;
import java.net.*;
import java.util.*;
public class InfoServer {
private final int INFO_PORT=50000;
private String datafromClient;
/** InfoServer Constructor */
public InfoServer() {
BufferedReader inFromClient;
DataOutputStream outToClient;
Socket serverSocket;
try {
/* bind port 50000 ke alamat lokal */
ServerSocket infoServer =
new ServerSocket(INFO_PORT);
System.out.println("Server telah siap");
/* lakukan perulangan tanpa henti,
* sampai client memberikan perintah QUIT
*/
while (true) {
/* masuk ke mode listening,
* server siap menerima permintaan dari client
*/
serverSocket = infoServer.accept();
System.out.println("Ada client " +
"yang terkoneksi!");
/* buat input stream dari socket
* dan juga sekaligus konversi dari
* byte stream ke character stream
* (InputStreamReader)
* BufferedReader akan memudahkan
* dalam pengolahan data karakter
*/
inFromClient =
new BufferedReader(
new InputStreamReader(
serverSocket.getInputStream()));
/* buat output stream ke socket */
outToClient =
new DataOutputStream(
serverSocket.getOutputStream());
/* tulis welcome ke client */
outToClient.writeBytes("InfoServer versi 0.1\n"+
"hanya untuk testing..\n"+
"Silahkan berikan perintah TIME | NET | QUIT\n");
/* lakukan perulangan sampai client
* mengirimkan perintah QUIT
*/
boolean isQUIT = false;
while (!isQUIT) {
/* baca data dari client */
datafromClient = inFromClient.readLine();
if (datafromClient.startsWith("TIME")) {
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);
}
}
/* program utama */
public static void main(String[] args) {
new InfoServer();
}
}
Kode program untuk InfoClient.java
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";
/** Creates a new instance of InfoClient */
public InfoClient() {
try {
/* siapkan input stream dari standard input (keyboard) */
BufferedReader inFromUser =
new BufferedReader(new
InputStreamReader(System.in));
/* buat koneksi socket ke server dan port yang dituju */
Socket clientSocket = new
Socket(TargetHost, INFO_PORT);
/* siapkan output stream ke socket */
DataOutputStream outToServer =
new DataOutputStream(
clientSocket.getOutputStream());
/* siapkan input stream dari socket */
BufferedReader inFromServer =
new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
/* tampilkan informasi Welcome dari Server
* oleh karena method readLine() akan
* membaca satu baris string
* yang diakhir dengan karakter ENTER,
* maka perlu diberikan 3
* pemanggilan method readLine()
* untuk membaca 3 baris pesan Welcome
* yang dikirim dari server
*/
System.out.println(inFromServer.readLine());
System.out.println(inFromServer.readLine());
System.out.println(inFromServer.readLine());
System.out.println("");
boolean isQuit = false;
while (!isQuit) {
/* menunggu masukan perintah dari User */
System.out.print("Perintah Anda : ");
String cmd = inFromUser.readLine();
/* konversi ke Upper dan cek
* apakah perintah QUIT yang diketikkan
* jika QUIT, beri nilai true untuk isQUIT
* agar looping !isQUIT selesai
*/
cmd = cmd.toUpperCase();
if (cmd.equals(QUIT)) {
isQuit = true;
}
/* kirim perintah yang dimasukkan ke server
* dan diakhiri dengan karakter ENTER, karena
* pada server data dari client dibaca
* dengan method readLine() untuk membaca
* satu baris string sampai dengan ENTER
*/
outToServer.writeBytes(cmd + "\n");
/* block reading ".
* client harus menunggu balasan dari server
*/
String result = inFromServer.readLine();
System.out.println("Dari Server: " + result);
}
/* tutup semua stream dan koneksi socket */
outToServer.close();
inFromServer.close();
clientSocket.close();
}
catch (IOException ioe) {
System.out.println("Error:" + ioe);
}
catch (Exception e) {
System.out.println("Error:" + e);
}
}
/**
* Program Utama InfoClient
*/
public static void main(String[] args) {
new InfoClient();
}
}
Untuk menjalankan program ini, diperlukan 2 buah Command Prompt dimana satu berperan sebagai Server dan satunya sebagai Client.
Adapun tampilan pada saat dijalankan :




