SlideShare a Scribd company logo
Distributed Programming, 10 November 2011
   UDP
       Low-level, connectionless
       No reliability guarantee
   TCP
       Connection-oriented
       Not as efficient as UDP




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   2
     The sending/receiving point-
        Class DatagramSocket
          void close() : close a datagram socket
          int getLocalPort() : returns the port number on which
           socket is bound
          InetAddress getLocalAddress() : returns the local
           address to which the socket is bound
          void receive(DatagramPacket p) : blocks until a
           datagram is received and the packet’s buffer contains the data
           received
          void send(DatagramPacket p) : sends a datagram
           packet from this socket




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)                   3
//Datagram Server
   public class DatagramServer {
       public static void main(String[] args) {
           DatagramPacket datapacket, returnpacket;
           int port = 2018;
           int len = 1024;
           try {
               DatagramSocket datasocket = new DatagramSocket(port);
               byte[] buf = new byte[len];
               datapacket = new DatagramPacket(buf, buf.length);
               while (true) {
                   try {
                       datasocket.receive(datapacket);
                       returnpacket = new DatagramPacket(
                               datapacket.getData(),
                               datapacket.getLength(),
                               datapacket.getAddress(),
                               datapacket.getPort());
                       datasocket.send(returnpacket);
                   } catch (IOException e) {
                       System.err.println(e);
                   }
               }
           } catch (SocketException se) {
               System.err.println(se);
           }
       }
   }




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)              4
//Datagram Client
public class DatagramClient {
    public static void main(String[] args) {
        String hostname;
        int port = 2018;
        int len = 1024;
        DatagramPacket sPacket, rPacket;
        InetAddress ia = InetAddress.getByName(hostname);
            DatagramSocket datasocket = new DatagramSocket();
            BufferedReader stdinp = new BufferedReader(
                                         new InputStreamReader(System.in));
            while (true) {
              String echoline = stdinp.readLine();
                    if (echoline.equals("done")) break;
                    byte[] buffer = new byte[echoline.length()];
                    buffer = echoline.getBytes();
                    sPacket = new DatagramPacket(buffer, buffer.length, ia,
                                   port);
                    datasocket.send(sPacket);
                    byte[] rbuffer = new byte[len];
                    rPacket = new DatagramPacket(rbuffer, rbuffer.length);
                    datasocket.receive(rPacket);
                    String retstring = new String(rPacket.getData());
                    System.out.println(retstring);
                } catch (IOException e) {
                    System.err.println(e);
                }
            } // while
}      } // end main

    Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)            5
    A connection is set up between the sender and the
     receiver
    Class Socket
      Socket(String host, int port) : creates a stream socket
       and connects it to the specified port number on the host
      InputStream getInputStream() : returns an input stream for
       reading bytes from this socket
      OutputStream getOutputStream() : returns an output
       stream for writing bytes to this socket




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)           6
 Creates a server side socket on the specified
  port
 class ServerSocket
      InetAddress getInetAddress() :
       returns the address to which this socket is
       connected
      Socket accept() : blocking method which
       waits for a connection to be made and accepts it


Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   7
    Maps a name to the host and port number
      Create a server socket
      Listen for incoming connections (accept())




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   8
//NameServer
public class NameServer {
    NameTable table;
    public NameServer() {
        table = new NameTable();
    }
    void handleclient(Socket theClient) {
             BufferedReader din = new BufferedReader
             (new InputStreamReader(theClient.getInputStream()));
             PrintWriter pout = new PrintWriter(theClient.getOutputStream());
             String getline = din.readLine();
             StringTokenizer st = new StringTokenizer(getline);
             String tag = st.nextToken();
             if (tag.equals("search")) {
                           ...

              } else if (tag.equals("insert")) {
                            ...

              }

    }
    public static void main(String[] args) {
        NameServer ns = new NameServer();
        System.out.println("NameServer started:");
            ServerSocket listener = new ServerSocket(Symbols.ServerPort);
            while (true) {
                Socket aClient = listener.accept();
                ns.handleclient(aClient);
                aClient.close();
            }
    }
}



     Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)                  9
//Client for name server
public class Name {
    BufferedReader din;
    PrintStream pout;
    public void getSocket() throws IOException {
        Socket server = new Socket(Symbols.nameServer, Symbols.ServerPort);
        din = new BufferedReader(new InputStreamReader(server.getInputStream()));
        pout = new PrintStream(server.getOutputStream());
    }
    public int insertName(String name, String hname, int portnum){
        getSocket();
        pout.println("insert " + name + " " + hname + " " + portnum);
        pout.flush();
        return Integer.parseInt(din.readLine());
    }
    public PortAddr searchName(String name) throws IOException {
        getSocket();
        pout.println("search " + name);
        pout.flush();
        String result = din.readLine();
        StringTokenizer st = new StringTokenizer(result);
        int portnum = Integer.parseInt(st.nextToken());
        String hname = st.nextToken();
        return new PortAddr(hname, portnum);
    }
    public static void main(String[] args) {
        Name myClient = new Name();
         myClient.insertName("hello1", "birch.ece.utexas.edu", 1000);
            PortAddr pa = myClient.searchName("hello1");
            System.out.println(pa.gethostname() + ":" + pa.getportnum());
      }
}




     Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)                      10
 Methods can be called by another JVM on a
  different host
 Interface is remote if it extends Remote
 Remote object implements a remote
  interface and extends UnicastRemoteObject

 public interface NameService extends Remote {
     public int search(String s) throws RemoteException;
     public int insert(String s, String hostName, int portNumber)
             throws RemoteException;
     public int getPort(int index) throws RemoteException;
     public String getHostName(int index) throws RemoteException;
 }
Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)           11
// A name service implementation
public class NameServiceImpl extends UnicastRemoteObject
        implements NameService {
        . . .

    public NameServiceImpl() throws RemoteException {
    }
    public int search(String s) throws RemoteException {
        . . .
    }
    public int insert(String s, String hostName, int portNumber)
            throws RemoteException {
        . . .

    }
    public int getPort(int index) throws RemoteException {
        return ports[index];
    }
    public String getHostName(int index) throws RemoteException {
        return hosts[index];
    }
    public static void main(String args[]) {
        // create security manager
        System.setSecurityManager(new RMISecurityManager());
       NameServiceImpl obj = new NameServiceImpl();
        Naming.rebind("MyNameServer", obj);
        System.out.println("MyNameServer bound in registry");
       }
}

    Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)       12
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class NameServiceImpl extends UnicastRemoteObject
        implements NameService {
    final int maxSize = 100;
    private String[] names = new String[maxSize];
    private String[] hosts = new String[maxSize];
    private int[] ports = new int[maxSize];
    private int dirsize = 0;
    public NameServiceImpl() throws RemoteException {
    }
    public int search(String s) throws RemoteException {
        for (int i = 0; i < dirsize; i++)
            if (names[i].equals(s)) return i;
        return -1;
    }

Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   13
public int insert(String s, String hostName, int
   portNumber)
             throws RemoteException {
         int oldIndex = search(s); // is it already there
         if ((oldIndex == -1) && (dirsize < maxSize)) {
             names[dirsize] = s;
             hosts[dirsize] = hostName;
             ports[dirsize] = portNumber;
             dirsize++;
             return 1;
         } else
             return 0;
     }
     public int getPort(int index) throws RemoteException
   {
         return ports[index];
     }
Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   14
public String getHostName(int index) throws
    RemoteException {
               return hosts[index];
        }
        public static void main(String args[]) {
               // create security manager
               System.setSecurityManager(new
    RMISecurityManager());
               try {
                        NameServiceImpl obj = new NameServiceImpl();
                        Naming.rebind("MyNameServer", obj);
                        System.out.println("MyNameServer bound in
    registry");
               } catch (Exception e) {
                        System.out.println("NameServiceImpl err: " +
    e.getMessage());
               }
        }
Pemrograman Terdistribusi  Sistem Terdistribusi (IKH331)               15
    Primitive types are passed by value
    Objects (that are not remote)
      They are serialized and then passed by value.
      At the other end the objects are deserialized
      Any references inside the object are also
         serialized
    Remote Objects
      Passed as remote references (stubs)


Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   16
    Obtain a reference for the remote object
    URL for the remote object is specified as
      rmi://host:port/name




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   17
//A RMI client program
import java.rmi.*;
public class NameRmiClient {
    public static void main(String args[]) {
        try {
            NameService r = (NameService)
                   Naming.lookup("rmi://linux02/MyNameServer");
            int i = r.insert("p1", "tick.ece", 2058);
            int j = r.search("p1");
            if (j != -1)
                System.out.println(r.getHostName(j) + ":" +

           r.getPort(j));
             } catch (Exception e) {
                 System.out.println(e);
             }
       }
}

Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)         18
 Vijay Garg, "Concurrent and Distributed
  Programming in Java"
 Source code
  http://users.ece.utexas.edu/~garg/jbk.html
 http://tjerdastangkas.blogspot.com/search/la
  bel/ikh331




Pemrograman Terdistribusi   Sistem Terdistribusi (IKH331)   19
Kamis, 10 November 2011

More Related Content

What's hot

Socket.io v.0.8.3
Socket.io v.0.8.3Socket.io v.0.8.3
Socket.io v.0.8.3
Maryna Vasina
 
5. Ввод-вывод, доступ к файловой системе
5. Ввод-вывод, доступ к файловой системе5. Ввод-вывод, доступ к файловой системе
5. Ввод-вывод, доступ к файловой системе
DEVTYPE
 
Java nio ( new io )
Java nio ( new io )Java nio ( new io )
Java nio ( new io )
Jemin Patel
 
Pemrograman Jaringan
Pemrograman JaringanPemrograman Jaringan
Pemrograman Jaringan
belajarkomputer
 
Netty: asynchronous data transfer
Netty: asynchronous data transferNetty: asynchronous data transfer
Netty: asynchronous data transfer
Victor Cherkassky
 
Socket System Calls
Socket System CallsSocket System Calls
Socket System Calls
Avinash Varma Kalidindi
 
Advanced Sockets Programming
Advanced Sockets ProgrammingAdvanced Sockets Programming
Advanced Sockets Programmingelliando dias
 
#5 (Remote Method Invocation)
#5 (Remote Method Invocation)#5 (Remote Method Invocation)
#5 (Remote Method Invocation)
Ghadeer AlHasan
 
NIO.2, the I/O API for the future
NIO.2, the I/O API for the futureNIO.2, the I/O API for the future
NIO.2, the I/O API for the future
Masoud Kalali
 
Udp socket programming(Florian)
Udp socket programming(Florian)Udp socket programming(Florian)
Udp socket programming(Florian)
Flor Ian
 
Active Software Documentation using Soul and IntensiVE
Active Software Documentation using Soul and IntensiVEActive Software Documentation using Soul and IntensiVE
Active Software Documentation using Soul and IntensiVEkim.mens
 
C# Application program UNIT III
C# Application program UNIT IIIC# Application program UNIT III
C# Application program UNIT IIIMinu Rajasekaran
 
Application-Specific Models and Pointcuts using a Logic Meta Language
Application-Specific Models and Pointcuts using a Logic Meta LanguageApplication-Specific Models and Pointcuts using a Logic Meta Language
Application-Specific Models and Pointcuts using a Logic Meta Language
ESUG
 
Magic Clusters and Where to Find Them 2.0 - Eugene Pirogov
Magic Clusters and Where to Find Them 2.0 - Eugene Pirogov Magic Clusters and Where to Find Them 2.0 - Eugene Pirogov
Magic Clusters and Where to Find Them 2.0 - Eugene Pirogov
Elixir Club
 
Network Sockets
Network SocketsNetwork Sockets
Network Sockets
Peter R. Egli
 
Advanced Java Practical File
Advanced Java Practical FileAdvanced Java Practical File
Advanced Java Practical FileSoumya Behera
 
OSGi Puzzlers
OSGi PuzzlersOSGi Puzzlers
OSGi Puzzlers
bjhargrave
 
Apache Flink Training: DataStream API Part 2 Advanced
Apache Flink Training: DataStream API Part 2 Advanced Apache Flink Training: DataStream API Part 2 Advanced
Apache Flink Training: DataStream API Part 2 Advanced
Flink Forward
 

What's hot (20)

Winform
WinformWinform
Winform
 
Socket.io v.0.8.3
Socket.io v.0.8.3Socket.io v.0.8.3
Socket.io v.0.8.3
 
5. Ввод-вывод, доступ к файловой системе
5. Ввод-вывод, доступ к файловой системе5. Ввод-вывод, доступ к файловой системе
5. Ввод-вывод, доступ к файловой системе
 
Java nio ( new io )
Java nio ( new io )Java nio ( new io )
Java nio ( new io )
 
Pemrograman Jaringan
Pemrograman JaringanPemrograman Jaringan
Pemrograman Jaringan
 
Netty: asynchronous data transfer
Netty: asynchronous data transferNetty: asynchronous data transfer
Netty: asynchronous data transfer
 
Socket System Calls
Socket System CallsSocket System Calls
Socket System Calls
 
Advanced Sockets Programming
Advanced Sockets ProgrammingAdvanced Sockets Programming
Advanced Sockets Programming
 
#5 (Remote Method Invocation)
#5 (Remote Method Invocation)#5 (Remote Method Invocation)
#5 (Remote Method Invocation)
 
NIO.2, the I/O API for the future
NIO.2, the I/O API for the futureNIO.2, the I/O API for the future
NIO.2, the I/O API for the future
 
Udp socket programming(Florian)
Udp socket programming(Florian)Udp socket programming(Florian)
Udp socket programming(Florian)
 
Active Software Documentation using Soul and IntensiVE
Active Software Documentation using Soul and IntensiVEActive Software Documentation using Soul and IntensiVE
Active Software Documentation using Soul and IntensiVE
 
C# Application program UNIT III
C# Application program UNIT IIIC# Application program UNIT III
C# Application program UNIT III
 
Application-Specific Models and Pointcuts using a Logic Meta Language
Application-Specific Models and Pointcuts using a Logic Meta LanguageApplication-Specific Models and Pointcuts using a Logic Meta Language
Application-Specific Models and Pointcuts using a Logic Meta Language
 
Magic Clusters and Where to Find Them 2.0 - Eugene Pirogov
Magic Clusters and Where to Find Them 2.0 - Eugene Pirogov Magic Clusters and Where to Find Them 2.0 - Eugene Pirogov
Magic Clusters and Where to Find Them 2.0 - Eugene Pirogov
 
Network Sockets
Network SocketsNetwork Sockets
Network Sockets
 
In kor we Trust
In kor we TrustIn kor we Trust
In kor we Trust
 
Advanced Java Practical File
Advanced Java Practical FileAdvanced Java Practical File
Advanced Java Practical File
 
OSGi Puzzlers
OSGi PuzzlersOSGi Puzzlers
OSGi Puzzlers
 
Apache Flink Training: DataStream API Part 2 Advanced
Apache Flink Training: DataStream API Part 2 Advanced Apache Flink Training: DataStream API Part 2 Advanced
Apache Flink Training: DataStream API Part 2 Advanced
 

Viewers also liked

Pemrosesan pada sistem terdistribusi
Pemrosesan pada sistem terdistribusiPemrosesan pada sistem terdistribusi
Pemrosesan pada sistem terdistribusiHendro Samudro
 
Pemrograman sistem teristribusi
Pemrograman sistem teristribusiPemrograman sistem teristribusi
Pemrograman sistem teristribusiarfianti
 
Sistem terdistribusi (dhaa3)
Sistem terdistribusi (dhaa3)Sistem terdistribusi (dhaa3)
Sistem terdistribusi (dhaa3)Mawaddah Warahmah
 
Konsep dasar sistem terdistribusi
Konsep dasar sistem terdistribusiKonsep dasar sistem terdistribusi
Konsep dasar sistem terdistribusiarfianti
 
membuat function dalam mysql
membuat function dalam mysqlmembuat function dalam mysql
membuat function dalam mysql
sukangimpi
 
Sister pertemuan 1
Sister pertemuan 1Sister pertemuan 1
Sister pertemuan 1ira_06
 
Tiara ramadhani, sitem terdistibusi, final project, 2017
Tiara ramadhani, sitem terdistibusi, final project, 2017Tiara ramadhani, sitem terdistibusi, final project, 2017
Tiara ramadhani, sitem terdistibusi, final project, 2017
Tiara Ramadhani
 
3-konsep dasar sistem terdistribusi
3-konsep dasar sistem terdistribusi3-konsep dasar sistem terdistribusi
3-konsep dasar sistem terdistribusiCoretan Rissa
 
Kuliah 1 pengantar sistem terdistribusi
Kuliah 1 pengantar sistem terdistribusiKuliah 1 pengantar sistem terdistribusi
Kuliah 1 pengantar sistem terdistribusi
IbraAcademy
 
Bdl
BdlBdl
Pertemuan Dua
Pertemuan DuaPertemuan Dua
Pertemuan Dua
sitetengku
 
FUNGSI – FUNGSI DALAM MYSQL
FUNGSI – FUNGSI DALAM MYSQLFUNGSI – FUNGSI DALAM MYSQL
FUNGSI – FUNGSI DALAM MYSQLIbrahim Naki
 
distributed shared memory
 distributed shared memory distributed shared memory
distributed shared memoryAshish Kumar
 
Scientific Applications of The Data Distribution Service
Scientific Applications of The Data Distribution ServiceScientific Applications of The Data Distribution Service
Scientific Applications of The Data Distribution Service
Angelo Corsaro
 
Platform prototype for ZL Vórtice
Platform prototype for ZL VórticePlatform prototype for ZL Vórtice
Platform prototype for ZL Vórtice
adelinegil
 

Viewers also liked (20)

Pemrosesan pada sistem terdistribusi
Pemrosesan pada sistem terdistribusiPemrosesan pada sistem terdistribusi
Pemrosesan pada sistem terdistribusi
 
Sistem terdistribusi
Sistem terdistribusiSistem terdistribusi
Sistem terdistribusi
 
Pemrograman sistem teristribusi
Pemrograman sistem teristribusiPemrograman sistem teristribusi
Pemrograman sistem teristribusi
 
Sistem terdistribusi (dhaa3)
Sistem terdistribusi (dhaa3)Sistem terdistribusi (dhaa3)
Sistem terdistribusi (dhaa3)
 
Konsep dasar sistem terdistribusi
Konsep dasar sistem terdistribusiKonsep dasar sistem terdistribusi
Konsep dasar sistem terdistribusi
 
membuat function dalam mysql
membuat function dalam mysqlmembuat function dalam mysql
membuat function dalam mysql
 
Sister pertemuan 1
Sister pertemuan 1Sister pertemuan 1
Sister pertemuan 1
 
Tiara ramadhani, sitem terdistibusi, final project, 2017
Tiara ramadhani, sitem terdistibusi, final project, 2017Tiara ramadhani, sitem terdistibusi, final project, 2017
Tiara ramadhani, sitem terdistibusi, final project, 2017
 
3-konsep dasar sistem terdistribusi
3-konsep dasar sistem terdistribusi3-konsep dasar sistem terdistribusi
3-konsep dasar sistem terdistribusi
 
Kuliah 1 pengantar sistem terdistribusi
Kuliah 1 pengantar sistem terdistribusiKuliah 1 pengantar sistem terdistribusi
Kuliah 1 pengantar sistem terdistribusi
 
message passing
 message passing message passing
message passing
 
Chap 4
Chap 4Chap 4
Chap 4
 
Bdl
BdlBdl
Bdl
 
Pertemuan Dua
Pertemuan DuaPertemuan Dua
Pertemuan Dua
 
FUNGSI – FUNGSI DALAM MYSQL
FUNGSI – FUNGSI DALAM MYSQLFUNGSI – FUNGSI DALAM MYSQL
FUNGSI – FUNGSI DALAM MYSQL
 
distributed shared memory
 distributed shared memory distributed shared memory
distributed shared memory
 
Scientific Applications of The Data Distribution Service
Scientific Applications of The Data Distribution ServiceScientific Applications of The Data Distribution Service
Scientific Applications of The Data Distribution Service
 
Platform prototype for ZL Vórtice
Platform prototype for ZL VórticePlatform prototype for ZL Vórtice
Platform prototype for ZL Vórtice
 
Bonsai
BonsaiBonsai
Bonsai
 
ikh311-03
ikh311-03ikh311-03
ikh311-03
 

Similar to ikh331-06-distributed-programming

Chapter 4 slides
Chapter 4 slidesChapter 4 slides
Chapter 4 slideslara_ays
 
TCP IP
TCP IPTCP IP
TCP IPhivasu
 
#2 (UDP)
#2 (UDP)#2 (UDP)
#2 (UDP)
Ghadeer AlHasan
 
Java Socket Programming
Java Socket ProgrammingJava Socket Programming
Java Socket Programming
Vipin Yadav
 
Laporan multiclient chatting client server
Laporan multiclient chatting client serverLaporan multiclient chatting client server
Laporan multiclient chatting client servertrilestari08
 
nw-lab_dns-server.pdf
nw-lab_dns-server.pdfnw-lab_dns-server.pdf
nw-lab_dns-server.pdf
Jayaprasanna4
 
Lab manual cn-2012-13
Lab manual cn-2012-13Lab manual cn-2012-13
Lab manual cn-2012-13Sasi Kala
 
Frequency .java Word frequency counter package frequ.pdf
Frequency .java  Word frequency counter  package frequ.pdfFrequency .java  Word frequency counter  package frequ.pdf
Frequency .java Word frequency counter package frequ.pdf
arshiartpalace
 
DCN Practical
DCN PracticalDCN Practical
DCN Practical
Niraj Bharambe
 
Jersey Guice AOP
Jersey Guice AOPJersey Guice AOP
Jersey Guice AOP
Domenico Briganti
 
Advance Java-Network Programming
Advance Java-Network ProgrammingAdvance Java-Network Programming
Advance Java-Network Programming
ashok hirpara
 
Network programming1
Network programming1Network programming1
Network programming1
Soham Sengupta
 
CHAPTER - 3 - JAVA NETWORKING.pptx
CHAPTER - 3 - JAVA NETWORKING.pptxCHAPTER - 3 - JAVA NETWORKING.pptx
CHAPTER - 3 - JAVA NETWORKING.pptx
DhrumilSheth3
 
JavaExamples
JavaExamplesJavaExamples
JavaExamples
Suman Astani
 
Connecting to the network
Connecting to the networkConnecting to the network
Connecting to the networkMu Chun Wang
 

Similar to ikh331-06-distributed-programming (20)

Chapter 4 slides
Chapter 4 slidesChapter 4 slides
Chapter 4 slides
 
Ipc
IpcIpc
Ipc
 
TCP IP
TCP IPTCP IP
TCP IP
 
#2 (UDP)
#2 (UDP)#2 (UDP)
#2 (UDP)
 
Java Socket Programming
Java Socket ProgrammingJava Socket Programming
Java Socket Programming
 
IKH331-07-java-rmi
IKH331-07-java-rmiIKH331-07-java-rmi
IKH331-07-java-rmi
 
Laporan multiclient chatting client server
Laporan multiclient chatting client serverLaporan multiclient chatting client server
Laporan multiclient chatting client server
 
nw-lab_dns-server.pdf
nw-lab_dns-server.pdfnw-lab_dns-server.pdf
nw-lab_dns-server.pdf
 
java sockets
 java sockets java sockets
java sockets
 
Lab manual cn-2012-13
Lab manual cn-2012-13Lab manual cn-2012-13
Lab manual cn-2012-13
 
Frequency .java Word frequency counter package frequ.pdf
Frequency .java  Word frequency counter  package frequ.pdfFrequency .java  Word frequency counter  package frequ.pdf
Frequency .java Word frequency counter package frequ.pdf
 
DCN Practical
DCN PracticalDCN Practical
DCN Practical
 
Jersey Guice AOP
Jersey Guice AOPJersey Guice AOP
Jersey Guice AOP
 
Advance Java-Network Programming
Advance Java-Network ProgrammingAdvance Java-Network Programming
Advance Java-Network Programming
 
Network programming1
Network programming1Network programming1
Network programming1
 
Anti patterns
Anti patternsAnti patterns
Anti patterns
 
CHAPTER - 3 - JAVA NETWORKING.pptx
CHAPTER - 3 - JAVA NETWORKING.pptxCHAPTER - 3 - JAVA NETWORKING.pptx
CHAPTER - 3 - JAVA NETWORKING.pptx
 
JavaExamples
JavaExamplesJavaExamples
JavaExamples
 
Ppt of socket
Ppt of socketPpt of socket
Ppt of socket
 
Connecting to the network
Connecting to the networkConnecting to the network
Connecting to the network
 

More from Anung Ariwibowo (20)

isd314-06-association-mining
isd314-06-association-miningisd314-06-association-mining
isd314-06-association-mining
 
ikp213-unifikasi
ikp213-unifikasiikp213-unifikasi
ikp213-unifikasi
 
ikp213-06-horn-clause
ikp213-06-horn-clauseikp213-06-horn-clause
ikp213-06-horn-clause
 
ikp213-01-pendahuluan
ikp213-01-pendahuluanikp213-01-pendahuluan
ikp213-01-pendahuluan
 
ikd312-05-sqlite
ikd312-05-sqliteikd312-05-sqlite
ikd312-05-sqlite
 
ikd312-05-kalkulus-relasional
ikd312-05-kalkulus-relasionalikd312-05-kalkulus-relasional
ikd312-05-kalkulus-relasional
 
ikd312-04-aljabar-relasional
ikd312-04-aljabar-relasionalikd312-04-aljabar-relasional
ikd312-04-aljabar-relasional
 
ikd312-03-design
ikd312-03-designikd312-03-design
ikd312-03-design
 
ikd312-02-three-schema
ikd312-02-three-schemaikd312-02-three-schema
ikd312-02-three-schema
 
ikp213-02-pendahuluan
ikp213-02-pendahuluanikp213-02-pendahuluan
ikp213-02-pendahuluan
 
ikh311-08
ikh311-08ikh311-08
ikh311-08
 
ikh311-07
ikh311-07ikh311-07
ikh311-07
 
ikh311-06
ikh311-06ikh311-06
ikh311-06
 
ikh311-05
ikh311-05ikh311-05
ikh311-05
 
ikp321-svn
ikp321-svnikp321-svn
ikp321-svn
 
ikh311-04
ikh311-04ikh311-04
ikh311-04
 
ikp321-05
ikp321-05ikp321-05
ikp321-05
 
imsakiyah-jakarta-1433-09
imsakiyah-jakarta-1433-09imsakiyah-jakarta-1433-09
imsakiyah-jakarta-1433-09
 
ikp321-04
ikp321-04ikp321-04
ikp321-04
 
ikp321-03
ikp321-03ikp321-03
ikp321-03
 

Recently uploaded

From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 

Recently uploaded (20)

From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 

ikh331-06-distributed-programming

  • 2. UDP  Low-level, connectionless  No reliability guarantee  TCP  Connection-oriented  Not as efficient as UDP Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 2
  • 3. The sending/receiving point- Class DatagramSocket  void close() : close a datagram socket  int getLocalPort() : returns the port number on which socket is bound  InetAddress getLocalAddress() : returns the local address to which the socket is bound  void receive(DatagramPacket p) : blocks until a datagram is received and the packet’s buffer contains the data received  void send(DatagramPacket p) : sends a datagram packet from this socket Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 3
  • 4. //Datagram Server public class DatagramServer { public static void main(String[] args) { DatagramPacket datapacket, returnpacket; int port = 2018; int len = 1024; try { DatagramSocket datasocket = new DatagramSocket(port); byte[] buf = new byte[len]; datapacket = new DatagramPacket(buf, buf.length); while (true) { try { datasocket.receive(datapacket); returnpacket = new DatagramPacket( datapacket.getData(), datapacket.getLength(), datapacket.getAddress(), datapacket.getPort()); datasocket.send(returnpacket); } catch (IOException e) { System.err.println(e); } } } catch (SocketException se) { System.err.println(se); } } } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 4
  • 5. //Datagram Client public class DatagramClient { public static void main(String[] args) { String hostname; int port = 2018; int len = 1024; DatagramPacket sPacket, rPacket; InetAddress ia = InetAddress.getByName(hostname); DatagramSocket datasocket = new DatagramSocket(); BufferedReader stdinp = new BufferedReader( new InputStreamReader(System.in)); while (true) { String echoline = stdinp.readLine(); if (echoline.equals("done")) break; byte[] buffer = new byte[echoline.length()]; buffer = echoline.getBytes(); sPacket = new DatagramPacket(buffer, buffer.length, ia, port); datasocket.send(sPacket); byte[] rbuffer = new byte[len]; rPacket = new DatagramPacket(rbuffer, rbuffer.length); datasocket.receive(rPacket); String retstring = new String(rPacket.getData()); System.out.println(retstring); } catch (IOException e) { System.err.println(e); } } // while } } // end main Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 5
  • 6. A connection is set up between the sender and the receiver  Class Socket  Socket(String host, int port) : creates a stream socket and connects it to the specified port number on the host  InputStream getInputStream() : returns an input stream for reading bytes from this socket  OutputStream getOutputStream() : returns an output stream for writing bytes to this socket Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 6
  • 7.  Creates a server side socket on the specified port  class ServerSocket  InetAddress getInetAddress() : returns the address to which this socket is connected  Socket accept() : blocking method which waits for a connection to be made and accepts it Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 7
  • 8. Maps a name to the host and port number  Create a server socket  Listen for incoming connections (accept()) Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 8
  • 9. //NameServer public class NameServer { NameTable table; public NameServer() { table = new NameTable(); } void handleclient(Socket theClient) { BufferedReader din = new BufferedReader (new InputStreamReader(theClient.getInputStream())); PrintWriter pout = new PrintWriter(theClient.getOutputStream()); String getline = din.readLine(); StringTokenizer st = new StringTokenizer(getline); String tag = st.nextToken(); if (tag.equals("search")) { ... } else if (tag.equals("insert")) { ... } } public static void main(String[] args) { NameServer ns = new NameServer(); System.out.println("NameServer started:"); ServerSocket listener = new ServerSocket(Symbols.ServerPort); while (true) { Socket aClient = listener.accept(); ns.handleclient(aClient); aClient.close(); } } } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 9
  • 10. //Client for name server public class Name { BufferedReader din; PrintStream pout; public void getSocket() throws IOException { Socket server = new Socket(Symbols.nameServer, Symbols.ServerPort); din = new BufferedReader(new InputStreamReader(server.getInputStream())); pout = new PrintStream(server.getOutputStream()); } public int insertName(String name, String hname, int portnum){ getSocket(); pout.println("insert " + name + " " + hname + " " + portnum); pout.flush(); return Integer.parseInt(din.readLine()); } public PortAddr searchName(String name) throws IOException { getSocket(); pout.println("search " + name); pout.flush(); String result = din.readLine(); StringTokenizer st = new StringTokenizer(result); int portnum = Integer.parseInt(st.nextToken()); String hname = st.nextToken(); return new PortAddr(hname, portnum); } public static void main(String[] args) { Name myClient = new Name(); myClient.insertName("hello1", "birch.ece.utexas.edu", 1000); PortAddr pa = myClient.searchName("hello1"); System.out.println(pa.gethostname() + ":" + pa.getportnum()); } } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 10
  • 11.  Methods can be called by another JVM on a different host  Interface is remote if it extends Remote  Remote object implements a remote interface and extends UnicastRemoteObject public interface NameService extends Remote { public int search(String s) throws RemoteException; public int insert(String s, String hostName, int portNumber) throws RemoteException; public int getPort(int index) throws RemoteException; public String getHostName(int index) throws RemoteException; } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 11
  • 12. // A name service implementation public class NameServiceImpl extends UnicastRemoteObject implements NameService { . . . public NameServiceImpl() throws RemoteException { } public int search(String s) throws RemoteException { . . . } public int insert(String s, String hostName, int portNumber) throws RemoteException { . . . } public int getPort(int index) throws RemoteException { return ports[index]; } public String getHostName(int index) throws RemoteException { return hosts[index]; } public static void main(String args[]) { // create security manager System.setSecurityManager(new RMISecurityManager()); NameServiceImpl obj = new NameServiceImpl(); Naming.rebind("MyNameServer", obj); System.out.println("MyNameServer bound in registry"); } } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 12
  • 13. import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class NameServiceImpl extends UnicastRemoteObject implements NameService { final int maxSize = 100; private String[] names = new String[maxSize]; private String[] hosts = new String[maxSize]; private int[] ports = new int[maxSize]; private int dirsize = 0; public NameServiceImpl() throws RemoteException { } public int search(String s) throws RemoteException { for (int i = 0; i < dirsize; i++) if (names[i].equals(s)) return i; return -1; } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 13
  • 14. public int insert(String s, String hostName, int portNumber) throws RemoteException { int oldIndex = search(s); // is it already there if ((oldIndex == -1) && (dirsize < maxSize)) { names[dirsize] = s; hosts[dirsize] = hostName; ports[dirsize] = portNumber; dirsize++; return 1; } else return 0; } public int getPort(int index) throws RemoteException { return ports[index]; } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 14
  • 15. public String getHostName(int index) throws RemoteException { return hosts[index]; } public static void main(String args[]) { // create security manager System.setSecurityManager(new RMISecurityManager()); try { NameServiceImpl obj = new NameServiceImpl(); Naming.rebind("MyNameServer", obj); System.out.println("MyNameServer bound in registry"); } catch (Exception e) { System.out.println("NameServiceImpl err: " + e.getMessage()); } } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 15
  • 16. Primitive types are passed by value  Objects (that are not remote)  They are serialized and then passed by value.  At the other end the objects are deserialized  Any references inside the object are also serialized  Remote Objects  Passed as remote references (stubs) Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 16
  • 17. Obtain a reference for the remote object  URL for the remote object is specified as  rmi://host:port/name Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 17
  • 18. //A RMI client program import java.rmi.*; public class NameRmiClient { public static void main(String args[]) { try { NameService r = (NameService) Naming.lookup("rmi://linux02/MyNameServer"); int i = r.insert("p1", "tick.ece", 2058); int j = r.search("p1"); if (j != -1) System.out.println(r.getHostName(j) + ":" + r.getPort(j)); } catch (Exception e) { System.out.println(e); } } } Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 18
  • 19.  Vijay Garg, "Concurrent and Distributed Programming in Java"  Source code http://users.ece.utexas.edu/~garg/jbk.html  http://tjerdastangkas.blogspot.com/search/la bel/ikh331 Pemrograman Terdistribusi Sistem Terdistribusi (IKH331) 19