SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

5. Ввод-вывод, доступ к файловой системе
5. Ввод-вывод, доступ к файловой системе5. Ввод-вывод, доступ к файловой системе
5. Ввод-вывод, доступ к файловой системеDEVTYPE
 
Java nio ( new io )
Java nio ( new io )Java nio ( new io )
Java nio ( new io )Jemin Patel
 
Netty: asynchronous data transfer
Netty: asynchronous data transferNetty: asynchronous data transfer
Netty: asynchronous data transferVictor Cherkassky
 
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 futureMasoud 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 LanguageESUG
 
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
 
Advanced Java Practical File
Advanced Java Practical FileAdvanced Java Practical File
Advanced Java Practical FileSoumya Behera
 
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
 

Tendances (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
 

En vedette

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 mysqlsukangimpi
 
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, 2017Tiara 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 terdistribusiIbraAcademy
 
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 ServiceAngelo Corsaro
 
Platform prototype for ZL Vórtice
Platform prototype for ZL VórticePlatform prototype for ZL Vórtice
Platform prototype for ZL Vórticeadelinegil
 

En vedette (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
 

Similaire à Distributed Programming Techniques Using UDP, TCP, and RMI

Chapter 4 slides
Chapter 4 slidesChapter 4 slides
Chapter 4 slideslara_ays
 
TCP IP
TCP IPTCP IP
TCP IPhivasu
 
Java Socket Programming
Java Socket ProgrammingJava Socket Programming
Java Socket ProgrammingVipin 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.pdfJayaprasanna4
 
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.pdfarshiartpalace
 
Advance Java-Network Programming
Advance Java-Network ProgrammingAdvance Java-Network Programming
Advance Java-Network Programmingashok hirpara
 
CHAPTER - 3 - JAVA NETWORKING.pptx
CHAPTER - 3 - JAVA NETWORKING.pptxCHAPTER - 3 - JAVA NETWORKING.pptx
CHAPTER - 3 - JAVA NETWORKING.pptxDhrumilSheth3
 
Connecting to the network
Connecting to the networkConnecting to the network
Connecting to the networkMu Chun Wang
 

Similaire à Distributed Programming Techniques Using UDP, TCP, and RMI (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
 

Plus de 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
 

Dernier

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 

Dernier (20)

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 

Distributed Programming Techniques Using UDP, TCP, and RMI

  • 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