Lewati navigasi


Kalau di post ini kita nyobanya pake Telnet, maka sekarang kita bikin client sederhana untuk berkomunikasi dengan server tersebut.

Kode servernya

package simpleserver;

import java.net.*;
import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {
        //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;
        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();
        serverSocket.close();
    }
}

Pada server, untuk melakukan listening perlu class ServerSocket. Untuk menerima koneksi, instance perlu diinvokasi method acceptnya. Method ini akan melakukan blocking sampai terdapat koneksi dan akan mengembalikan sebuah instance dari class Socket. Sebuah socket akan  mengurusi koneksi antara satu komputer dengan komputer yang lain. Pada client pun kita menggunakan class Socket tersebut untuk berkomunikasi dengan server. Untuk streaming datanya terdapat method getInputStream dan getOutputStream yang dapat digunakan layaknya standard input output.

Berikut kodenya

package simpleclient;

import java.io.*;
import java.net.*;

public class Main {

    public static void main(String[] args) throws IOException {
        String IPdest = "127.0.0.1";
        Integer Portdest = 4444;
        //Menyiapkan socket dan streaming i/o
        Socket echoSocket = null;
        PrintWriter out = null;
        BufferedReader in = null;

        try {
            //Membuka koneksi
            echoSocket = new Socket(IPdest, Portdest);
            //Membuka stream I/O dari socket yang sudah dibuka
            out = new PrintWriter(echoSocket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(
                    echoSocket.getInputStream()));
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: " + IPdest);
            System.exit(1);
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for " + "the connection to: " + IPdest);
            System.exit(1);
        }
        //Mengirimkan string ke server
        out.println("Hello World, Server!");
        //Menampilkan string yang dikirim oleh server
        System.out.println(in.readLine());

        //Menutup koneksi dan stream
        out.close();
        in.close();
        echoSocket.close();
    }
}

Hasil pengujian pada Netbeans.
Server

run:
Hello World, Server!
BUILD SUCCESSFUL (total time: 4 seconds)

Client

run:
Hello World, Client!
BUILD SUCCESSFUL (total time: 0 seconds)

Kode bisa diambil di sini dan sini.

7 Comments

  1. copy ah..

  2. gan kok ini g mau,…
    errornya di
    Exception in thread “main” java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:168)
    at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:411)
    at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:453)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:183)
    at java.io.InputStreamReader.read(InputStreamReader.java:167)
    at java.io.BufferedReader.fill(BufferedReader.java:136)
    at java.io.BufferedReader.readLine(BufferedReader.java:299)
    at java.io.BufferedReader.readLine(BufferedReader.java:362)
    at client.Main.main(Main.java:53)

    jadi kalo di program juragan bagian System.out.println(in.Readline);

    bisa bantu juragan,…

  3. juragan,..
    ternyata mau,..
    waduh malu juragan,…
    hehehehe
    kodingan nya salah gara2 saya bikin ulang,..
    jadi saya koding ulang,…
    sekalian latihan,…

    lanjut gan

  4. Thanks bgt bang.. Java Cool..

  5. bagus sekali gan….

    thankz for the tutorial…

  6. Agan file downloadx corupt pas di buka,,,,
    buka dalam bnetuk notpad juga g bisa,,,
    makasih


One Trackback/Pingback

  1. […] Posts Java Socket Programming: Simple ClientSocket Programming di CManajemen MySQL dengan NetbeansSimple SCPDesign Pattern MVC Pada Pemrograman […]

Tinggalkan komentar