Langsung ke konten utama

Socket


Socket adalah sebuah abstraksi perangkat lunak yang digunakan sebagai suatu “terminal” dari suatu hubungan antara dua mesin atau proses yang saling berinterkoneksi.


Contoh ini mengenalkan pemrograman soscket dengan Java. Server mendengar (listen) koneksi yang masuk. Ketika suatu koneksi terbangun, client dapat mengirimkan data. Pada kode di bawah ini, client mengirimkan pesan “Hi my server”. Client mengirimkan pesan khusus “bye” untuk menghentikan koneksi dari server. Kemudian server mengirimkan pesan “bye” juga. Terakhir, koneksi diakhiri dan server menunggu koneksi berikutnya. Dua program ini dapat dijalankan pada mesin yang sama. Jika dijalankan pada mesin berbeda, cukup ubah alamat “localhost” dengan suatu IP adress dari mesin di mana server dijalankan.

Server

import java.io.*;
import java.net.*;
public class Provider{
    ServerSocket providerSocket;
    Socket connection = null;
    ObjectOutputStream out;
    ObjectInputStream in;
    String message;
    Provider(){}
    void run()
    {
        try{
            //1. creating a server socket
            providerSocket = new ServerSocket(2004, 10);
            //2. Wait for connection
            System.out.println("Waiting for connection");
            connection = providerSocket.accept();
            System.out.println("Connection received from " + connection.getInetAddress().getHostName());
            //3. get Input and Output streams
            out = new ObjectOutputStream(connection.getOutputStream());
            out.flush();
            in = new ObjectInputStream(connection.getInputStream());
            sendMessage("Connection successful");
            //4. The two parts communicate via the input and output streams
            do{
                try{
                    message = (String)in.readObject();
                    System.out.println("client>" + message);
                    if (message.equals("bye"))
                        sendMessage("bye");
                }
                catch(ClassNotFoundException classnot){
                    System.err.println("Data received in unknown format");
                }
            }while(!message.equals("bye"));
        }
        catch(IOException ioException){
            ioException.printStackTrace();
        }
        finally{
            //4: Closing connection
            try{
                in.close();
                out.close();
                providerSocket.close();
            }
            catch(IOException ioException){
                ioException.printStackTrace();
            }
        }
    }
    void sendMessage(String msg)
    {
        try{
            out.writeObject(msg);
            out.flush();
            System.out.println("server>" + msg);
        }
        catch(IOException ioException){
            ioException.printStackTrace();
        }
    }
    public static void main(String args[])
    {
        Provider server = new Provider();
        while(true){
            server.run();
        }
    }

}

Client

import java.io.*;
import java.net.*;
public class Requester{
    Socket requestSocket;
    ObjectOutputStream out;
    ObjectInputStream in;
    String message;
    Requester(){}
    void run()
    {
        try{
            //1. creating a socket to connect to the server
            requestSocket = new Socket("localhost", 2004);
            System.out.println("Connected to localhost in port 2004");
            //2. get Input and Output streams
            out = new ObjectOutputStream(requestSocket.getOutputStream());
            out.flush();
            in = new ObjectInputStream(requestSocket.getInputStream());
            //3: Communicating with the server
            do{
                try{
                    message = (String)in.readObject();
                    System.out.println("server>" + message);
                    sendMessage("Hi my server");
                    message = "bye";
                    sendMessage(message);
                }
                catch(ClassNotFoundException classNot){
                    System.err.println("data received in unknown format");
                }
            }while(!message.equals("bye"));
        }
        catch(UnknownHostException unknownHost){
            System.err.println("You are trying to connect to an unknown host!");
        }
        catch(IOException ioException){
            ioException.printStackTrace();
        }
        finally{
            //4: Closing connection
            try{
                in.close();
                out.close();
                requestSocket.close();
            }
            catch(IOException ioException){
                ioException.printStackTrace();
            }
        }
    }
    void sendMessage(String msg)
    {
        try{
            out.writeObject(msg);
            out.flush();
            System.out.println("client>" + msg);
        }
        catch(IOException ioException){
            ioException.printStackTrace();
        }
    }
    public static void main(String args[])
    {
        Requester client = new Requester();
        client.run();
    }
}


Sumber:https://komputasi.wordpress.com/2009/08/13/java-contoh-server-socket-sederhana/

Komentar

Postingan populer dari blog ini

Thread dalam Java

Apa itu Kelas  Thread Java Salah satu fitur yang tertanam pada  environment Java  yaitu dukungan untuk menggunakan  thread .  Thread  memungkinkan sebuah aplikasi  Java untuk melakukan banyak aktifitas/operasi secara simultan (serentak). Dengan menggunakannya secara benar,  thread  memungkinkan  User Interface  sebuah aplikasi tetap responsif saat aplikasi tersebut melakukan operasi yang memakan waktu lama seperti komunikasi  networking  atau perhitungan-perhitungan yang kompleks.  Thread  adalah unit fundamental dari eksekusi program. Setiap aplikasi minimal memiliki sebuah  thread  untuk menjalankan kode. Aplikasi yang memiliki dua  thread  atau lebih, biasa disebut dengan  multithreaded application .  Fungsi seperti ini sering kita butuhkan dalam membuat program aplikasi/game nantinya. Misalnya, sebuah  thread  yang bertugas menjalankan operasi penghitungan nilai/...

Program Exception Pada Java

Di dalam Lab, kami juga mempelajari sekilas tentang program exception: Exception  merupakan suatu kejadian yang tidak biasa atau event abnormal yang muncul ketika sedang menjalankan program. Exception merupakan runtime error. Ketika Exception muncul, maka akan melempar  sebuah obyek Exception, jika obyek yang dilempar ini tidak ditangani atau ditangkap maka akan mengakibatkan program determinasi (berhenti), hal ini dapat menyebabkan program menjadi tidak handal. Untuk mengatasi hal ini dibutuhkan sesuatu untuk menangani Exception. Error dan Exception Classes Seluruh exceptions adalah subclasses, baik secara langsung maupun tidak langsung, dari sebuah root class Throwable. Kemudian, dalam class ini terdapat dua kategori umum : Error class dan Exception class. Exception class menunjukkan kondisi yang dapat diterima oleh user program. Umumnya hal tersebut disebabkan oleh beberapa kesalahan pada kode program. Contoh dari exceptions adalah pembagian oleh 0 dan error di luar ...

Java Collection

C ollection adalah sekumpulan interface dan class yang sangat berguna dalam pengolahan variable / objek di Java.  Suatu objek collection Java dapat menyimpan beberapa elemen objek dalam suatu kesatuan group.  Dengan pengelompokan dalam group tersebut kita mendapatkan manfaat berikut : menyimpan elemen dengan urutan tertentu,  mengambil kembali elemen tersebut dengan index atau dengan berbagai metode yang spesifik,  memanipulasi data terutama agregasi dari elemen-elemen yang ada seperti penjumlahan,  dan berbagai transformasi bermanfaat lainnya. Beberapa Pengertian: 1.  Map dan List Map dan List merupakan sebuah interface yang digunakan untuk menerapkan Collection. Map dan List yang dibuat dapat memiliki cara implementasi yang berbeda, misalnya dengan menggunakan Array, menggunakan key hash. Apa perbedaan map dan list? Map dapat memiliki Key custom (Object, String, Integer, dll) sedangkan List hanya berupa sebuah daftar 2. ...