Pada post yang lalu, server yang dijalankan hanya bisa memaintain sebuah koneksi kemudian keluar. Cara untuk mengatasinya adalah dengan menggunakan infinite loop.
package simpleserver;
import java.net.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException, InterruptedException {
//Membuat Server Socket
ServerSocket serverSocket = null;
try {
//Mencoba untuk binding ke port 4444
serverSocket = new ServerSocket(4444);
} catch (IOException e) {
System.err.println("Could not listen on port: 4444.");
System.exit(1);
}
//Membuat client Socket
Socket clientSocket = null;
while (true) {
try {
//Mencoba menerima koneksi socket dari client
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
//Membuat stream input/output dari client socket
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
//Menampilkan string yang dikirim oleh client
System.out.println(in.readLine());
//Mengirimkan string "Hello!" ke client
out.println("Hello World, Client!");
//Menutup koneksi dan stream
out.close();
in.close();
clientSocket.close();
}
}
}
Ketika aplikasi masuk ke dalam loop, aplikasi akan melakukan blocking saat menerima koneksi. Setelah itu dijalankan dan akan kembali ke awal loop lagi. Dengan demikian aplikasi client dapat melakukan koneksi berkali-kali.
run: test test test test test
Permasalahannya adalah ketika di dalam loop tersebut melakukan sebuah kegiatan yang cukup lama katakanlah selama 20 detik. Dengan menggunakan cara ini setiap koneksi akan menunggu koneksi yang sebelumnya selesai melaksanakan komunikasi. Kadang-kadang ada koneksi yang menetapkan waktu timeout selama 20 detik atau lebih. Koneksi-koneksi yang sedang menunggu ini akan putus sebelum melakukan komunikasi.
Filed under: Dedicated, Easy, Java, Lecture, Network Programming, Web Programming, tutorial , Programming, Netbeans, Network Programming, Java, Java EE, socket programming




[...] Local Network di VirtualBoxDesign Pattern MVC Pada Pemrograman Web JSP/ServletRequestJava Socket Programming: Multiple ConnectionLogin Sederhana menggunakan [...]