0% found this document useful (0 votes)
9 views

Modul 7 UDP Communication

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

Modul 7 UDP Communication

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

Membuat Aplikasi Pengiriman data

Menggunakan Protocol UDP


Pada pertemuan kali ini, akan dibahas sebuah aplikasi untuk mengirimkan data stream pada
protocol UDP.
Aplikasi pertama digunakan hanya untuk mengirimkan data yang dimasukkan dari keyboard,
sedangkan aplikasi ke-dua akan membaca data dari sebuah teks file dan dikirimkan melalui
jaringan.

Aplikasi Client 1

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

class UDPClient {
public static void main(String args[]) throws Exception
{
try {
String serverHostname = new String ("127.0.0.1");

if (args.length > 0)
serverHostname = args[0];

BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));

DatagramSocket clientSocket = new DatagramSocket();

InetAddress IPAddress = InetAddress.getByName(serverHostname);


System.out.println ("Attemping to connect to " + IPAddress +
") via UDP port 9876");

byte[] sendData = new byte[1024];

‘13 Pemrograman Jaringan Komputer Pusat Bahan Ajar dan eLearning


2 Tim Dosen http://www.mercubuana.ac.id
byte[] receiveData = new byte[1024];

System.out.print("Enter Message: ");


String sentence = inFromUser.readLine();
sendData = sentence.getBytes();

System.out.println ("Sending data to " + sendData.length +


" bytes to server.");
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

clientSocket.send(sendPacket);

DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);

System.out.println ("Waiting for return packet");


clientSocket.setSoTimeout(10000);

try {
clientSocket.receive(receivePacket);
String modifiedSentence =
new String(receivePacket.getData());

InetAddress returnIPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

System.out.println ("From server at: " + returnIPAddress +


":" + port);
System.out.println("Message: " + modifiedSentence);

}
catch (SocketTimeoutException ste)
{
System.out.println ("Timeout Occurred: Packet assumed lost");
}

‘13 Pemrograman Jaringan Komputer Pusat Bahan Ajar dan eLearning


3 Tim Dosen http://www.mercubuana.ac.id
clientSocket.close();
}
catch (UnknownHostException ex) {
System.err.println(ex);
}
catch (IOException ex) {
System.err.println(ex);
}
}
}

Aplikasi Client ke-2

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

class UDPClient2
{
private InetAddress IPAddress;
boolean done;
boolean keepGoing;

public UDPClient2(String sHostName)


{
String s1;
ArrayList lines = new ArrayList();
int size;
BufferedReader br;

try {
IPAddress = InetAddress.getByName(sHostName);
System.out.println ("Attemping to connect to " + IPAddress +
") via UDP port 9876");
}

‘13 Pemrograman Jaringan Komputer Pusat Bahan Ajar dan eLearning


4 Tim Dosen http://www.mercubuana.ac.id
catch (UnknownHostException ex)
{
System.err.println(ex);
System.exit(1);
}

// set up the buffered reader to read from the keyboard


try {
br = new BufferedReader (new FileReader ("UDPInputFile.txt"));
s1 = br.readLine();
while (s1 != null)
{
lines.add(s1);
s1 = br.readLine ();
}
size = lines.size();
System.out.println ("ArrayList lines has size of: " + size);

done = false;

DatagramSocket clientSocket = new DatagramSocket();


for (int i = 0; i < size ; i++)
{

byte[] sendData = new byte[1024];

s1 = (String) lines.get(i);
sendData = s1.getBytes();

System.out.println ("Sending data to " + sendData.length +


" bytes to server from line " + (i + 1));
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

clientSocket.send(sendPacket);
}

‘13 Pemrograman Jaringan Komputer Pusat Bahan Ajar dan eLearning


5 Tim Dosen http://www.mercubuana.ac.id
done = true;

byte[] receiveData = new byte[1024];

keepGoing = true;

DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);

System.out.println ("Waiting for return packet");


clientSocket.setSoTimeout(10000);

while (keepGoing)
{
try {
clientSocket.receive(receivePacket);
String modifiedSentence =
new String(receivePacket.getData());

//InetAddress returnIPAddress = receivePacket.getAddress();

//int port = receivePacket.getPort();

//System.out.println ("From server at: " + returnIPAddress +


// ":" + port);
System.out.println("Message: " + modifiedSentence);

}
catch (SocketTimeoutException ste)
{
System.out.println ("Timeout Occurred: Packet assumed lost");
if (done)
keepGoing = false;
}

}
clientSocket.close();

‘13 Pemrograman Jaringan Komputer Pusat Bahan Ajar dan eLearning


6 Tim Dosen http://www.mercubuana.ac.id
}
catch (IOException ex)
{
System.err.println(ex);
}
}

public static void main(String args[]) throws Exception


{
String serverHostname = new String ("127.0.0.1");

if (args.length > 0)
serverHostname = args[0];

new UDPClient2 (serverHostname);

}
}

Aplikasi Server

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

class UDPServer {
public static void main(String args[]) throws Exception
{
try
{
DatagramSocket serverSocket = new DatagramSocket(9876);

byte[] receiveData = new byte[1024];


byte[] sendData = new byte[1024];

while(true)

‘13 Pemrograman Jaringan Komputer Pusat Bahan Ajar dan eLearning


7 Tim Dosen http://www.mercubuana.ac.id
{

receiveData = new byte[1024];

DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);

System.out.println ("Waiting for datagram packet");

serverSocket.receive(receivePacket);

String sentence = new String(receivePacket.getData());

InetAddress IPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

System.out.println ("From: " + IPAddress + ":" + port);


System.out.println ("Message: " + sentence);

String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();

DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);

serverSocket.send(sendPacket);

}
catch (SocketException ex) {
System.out.println("UDP Port 9876 is occupied.");
System.exit(1);
}

‘13 Pemrograman Jaringan Komputer Pusat Bahan Ajar dan eLearning


8 Tim Dosen http://www.mercubuana.ac.id
}
}

‘13 Pemrograman Jaringan Komputer Pusat Bahan Ajar dan eLearning


9 Tim Dosen http://www.mercubuana.ac.id
Daftar Pustaka
1. Graba, J (2013). An Introduction To Network Programming with Java. Springer:
London

‘13 Pemrograman Jaringan Komputer Pusat Bahan Ajar dan eLearning


10 Tim Dosen http://www.mercubuana.ac.id

You might also like