Skip navigation


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.

abServer akan terus menyala

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.

One Trackback/Pingback

  1. By Males Koding on 09 Mei 2009 at 4:34 pm

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

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: