diff --git a/doc/Tubes Sister.zip b/doc/Tubes Sister.zip new file mode 100644 index 0000000000000000000000000000000000000000..cbc4aa8c447f74acb11eb6fc893ca98a12775fa0 Binary files /dev/null and b/doc/Tubes Sister.zip differ diff --git a/doc/Tubes Sister/Client.java b/doc/Tubes Sister/Client.java new file mode 100644 index 0000000000000000000000000000000000000000..af2d8bb2a6d0862c1ddbca36f11a8ec525f7548d --- /dev/null +++ b/doc/Tubes Sister/Client.java @@ -0,0 +1,37 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; + +public class Client { + /** + * Contoh kode program untuk node yang mengirimkan paket. Paket dikirim + * menggunakan UnreliableSender untuk mensimulasikan paket yang hilang. + */ + public static void main(String args[]) throws Exception + { + BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); + + String targetAddress = "localhost"; + InetAddress IPAddress = InetAddress.getByName(targetAddress); + int targetPort = 9876; + + DatagramSocket datagramSocket = new DatagramSocket(); + UnreliableSender unreliableSender = new UnreliableSender(datagramSocket); + + while (true) + { + String sentence = inFromUser.readLine(); + if (sentence.equals("quit")) + { + break; + } + + byte[] sendData = sentence.getBytes(); + DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, targetPort); + unreliableSender.send(sendPacket); + } + datagramSocket.close(); + } +} diff --git a/doc/Tubes Sister/Receiver.java b/doc/Tubes Sister/Receiver.java new file mode 100644 index 0000000000000000000000000000000000000000..3e59a1defbe304f1bb3fa5c3af8b856224040bdb --- /dev/null +++ b/doc/Tubes Sister/Receiver.java @@ -0,0 +1,26 @@ +import java.net.DatagramSocket; +import java.net.DatagramPacket; +import java.net.InetAddress; + +public class Receiver +{ + /** + * Contoh kode program untuk node yang menerima paket. Idealnya dalam paxos + * balasan juga dikirim melalui UnreliableSender. + */ + public static void main(String args[]) throws Exception + { + int listenPort = 9876; + DatagramSocket serverSocket = new DatagramSocket(listenPort); + + byte[] receiveData = new byte[1024]; + while(true) + { + DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); + serverSocket.receive(receivePacket); + + String sentence = new String(receivePacket.getData(), 0, receivePacket.getLength()); + System.out.println("RECEIVED: " + sentence); + } + } +} diff --git a/doc/Tubes Sister/TugasBesar1-IF3230SistemParaleldanTerdistribusi.pdf b/doc/Tubes Sister/TugasBesar1-IF3230SistemParaleldanTerdistribusi.pdf new file mode 100644 index 0000000000000000000000000000000000000000..17654bacca8eed5cf572a5993a18aa3104dc5b63 Binary files /dev/null and b/doc/Tubes Sister/TugasBesar1-IF3230SistemParaleldanTerdistribusi.pdf differ diff --git a/doc/Tubes Sister/UnreliableSender.java b/doc/Tubes Sister/UnreliableSender.java new file mode 100644 index 0000000000000000000000000000000000000000..aba09a12e5166a4c33220908192cba62d4ce0f5e --- /dev/null +++ b/doc/Tubes Sister/UnreliableSender.java @@ -0,0 +1,27 @@ +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.SocketException; +import java.util.Random; + +/** + * Kelas pembungkus DatagramSocket yang mensimulaiskan paket yang hilang + * dalam pengiriman. + */ +public class UnreliableSender +{ + private DatagramSocket datagramSocket; + private Random random; + + public UnreliableSender(DatagramSocket datagramSocket) throws SocketException { + this.datagramSocket = datagramSocket; + random = new Random(); + } + + public void send(DatagramPacket packet) throws IOException { + double rand = random.nextDouble(); + if (rand < 0.85) { + datagramSocket.send(packet); + } + } +} diff --git a/doc/Tubes Sister/referensi code.zip b/doc/Tubes Sister/referensi code.zip new file mode 100644 index 0000000000000000000000000000000000000000..2b85da52b84e23a94602ad6a132cb449d1c3a90f Binary files /dev/null and b/doc/Tubes Sister/referensi code.zip differ