0% menganggap dokumen ini bermanfaat (0 suara)
99 tayangan

Pemrograman Socket

Modul ini membahas tentang pemrograman socket untuk komunikasi antar komputer melalui jaringan. Terdapat penjelasan mengenai konsep socket, jenis komunikasi socket seperti TCP dan UDP, langkah pembuatan program socket sederhana menggunakan bahasa pemrograman Java. Modul ini juga berisi contoh kode program socket server dan client serta cara mengirim pesan antar komputer menggunakan protokol TCP dan UDP. [/ringkasan]

Diunggah oleh

ch0l15
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
99 tayangan

Pemrograman Socket

Modul ini membahas tentang pemrograman socket untuk komunikasi antar komputer melalui jaringan. Terdapat penjelasan mengenai konsep socket, jenis komunikasi socket seperti TCP dan UDP, langkah pembuatan program socket sederhana menggunakan bahasa pemrograman Java. Modul ini juga berisi contoh kode program socket server dan client serta cara mengirim pesan antar komputer menggunakan protokol TCP dan UDP. [/ringkasan]

Diunggah oleh

ch0l15
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 12

Modul Pemrograman Terdistribusi

MODUL I
PEMROGRAMAN SOCKET

1. TUJUAN
Mahasiswa memahami konsep pemprograman socket.
Mahasiswa memahami jenis jenis socket programming
Mahasiswa mampu membangun program socket sederhana

2. ALAT DAN KOMPONEN


Beberapa komputer yang berfungsi sebagai server.
Beberapa komputer yang berfungsi sebagai client
Jaringan

3. TEORI DASAR
Setiap aplikasi di jaringan, transaksinya didasarkan pada konsep clientserver. Sebuah server dan
sebuah atau beberapa client yang meminta/request pelayanan ke server. Fungsi server sebagai
pengatur resource yang ada, yang menyediakan pelayanan dengan memanfaatkan resource yang
untuk kebutuhan client. Proses ini (proses clientserver) bisa dijalankan pada sebuah komputer
(komputer tunggal) atau bisa juga satu komputer berfungsi sebagai server dan sebuah atau
beberapa komputer berfungsi sebagai client.

Socket adalah salah satu cara untuk komunikasi antar komputer, umumnya lewat. Socket
merupakan fasilitas IPC (Inter Proses Communication) untuk aplikasi jaringan. Agar dua
program dapat berkomunikasi, masing-masing program harus membuat socket, yang kemudian
socket-socket tersebut harus terhubung satu sama lain. Dalam hal ini ada dua socket akan
digunakan. Pertama suatu program harus membuat socket yang menunggu secara pasif hingga
koneksi lain dari socket lain di komputer lain datang. Socket yang sedang menunggu ini disebut
sedang "mendengar" (listening) suatu koneksi. Di sisi lain di komputer lain, program lain
membuat socket yang mengirim permintaan sambungan ke socket pendengar tadi. Ketika socket
pendengar menerima permintaan sambungan dari socket lain, socket ini akan merespon, sehingga
komunikasi akan terjadi. Begitu komunikasi terjadi, maka masing-masing program akan bisa
membuat aliran input dan aliran output untuk koneksi ini. Komunikasi akan terus terjadi hingga
salah satu program menutup (close) koneksi.

Sebagai mana untuk dapat mengkomunikasi dengan komputer lain, masing-masing komputer
diberi identitas pada level aplikasi berupa alamat IP (Internet Protocol) seperti 192.168.29.251.
Agar suatu soket dapat berkomunikasi dengan soket lainnya, maka socket butuh diberi suatu
alamat unik sebagai identifikasi. Alamat soket terdiri atas Alamat IP dan Nomer Port. Contoh
alamat soket adalah 192.168.29.30: 3000, dimana nomer 3000 adalah nomer portnya.

Socket dapat melakukan operasi:

Koneksi ke mesin remote (mengendalikan mesin atau perangkat)

Mengirim data

Teknik Informatika Universitas Merdeka Pasuruan 1


Modul Pemrograman Terdistribusi

Menerima data

Menutup koneksi

Bind to a port (Bergantung pada port)

Listen pada data yang masuk (Mendengarkan data yang masuk )

Menerima koneksi dari mesin remote (mesin yang dikendalikan) pada port tertentu

Macam-macam Komunikasi Socket

Komunikasi stream (TCP)

Komunikasi stream sering juga disebut dengan komunikasi yang berorientasi koneksi
(Connection oriented communication).
Protokol standar untuk komunikasi stream dikenal dengan istilah TCP (Transmission
Control Protocol)
TCP tidak memiliki batasan ini karena data-datadikirimkan sebagai aliran data (stream).
TCP akan memecah data yang besar menjadi sejumlah paket data berukuran kecil dan
diberi nomer urut.
TCP adalah protocol yang reliable yang senantiasa menunggu konfirmasi dari pihak
socket penerima, dan kalau perlu paket data yang hilang akan dikirimkan kembali.

Mekanisme socket TCP

Komunikasi datagram (UDP)

Komunikasi datagram disebut juga dengan komunikasi tak berkoneksi


(connectionless communication).
Standar protokol komunikasi datagram dikenal dengan UDP (User Datagram Protocol).
Setiap kali suatu paket data dikirim, informasi soket pengirim dan alamat soket tujuan
turut dikirimkan.
Memiliki batasan ukuran datagram (paket data) yang dikirimkan sebesar 64 kb.
Teknik Informatika Universitas Merdeka Pasuruan 2
Modul Pemrograman Terdistribusi

UDP merupakan protocol yang unreliable (tidak handal). Ketika paket data dikirimkan,
UDP tidak mengecek kembali apakah data yang dikirim sampai tujuan. Jadi dengan
UDP tidak ada kepastian bagi sisi pengirim bahwa datanya sudah sampai ke tujuan
dengan keadaan baik.

SERVER CLIENT
socket socket

bind pengalamatan

recvfrom sendto

close close

Mekanisme socket UDP

Java Socket

Pada J2SE telah disediakan paket java.net yang berisi Berisi kelas-kelas untuk pemrograman
jaringan. Memungkinkan programmer membuat program yang dapat mengakses server di
Internet. Memungkinkan programmer membuat server Internet (jaringan) sendiri. Untuk
pemrograman Socket Connection Oriented menggunakan kelas java.net.ServerSocket dan
java.net.Socket. Untuk pemrograman Socket Connectionless Oriented menggunakan kelas
java.net.DatagramSocket.

4. LANGKAH-LANGKAH PRAKTIKUM
Praktekkan setiap langkah di bawah ini dan jawab pertanyaan :

Mengetahui IP Address dan nama host komputer local

Buka Netbeans.
Buatlah Project Baru dengan nama mod1_socket.
Buatlah class dengan nama getIP_local
Ketik code program di bawah ini :

Teknik Informatika Universitas Merdeka Pasuruan 3


Modul Pemrograman Terdistribusi

Jalankan program diatas.


Tuliskan apa yang terjadi ?
Buat class baru dengan nama gethostname

Jalankan program diatas.


Tuliskan apa yang terjadi ?

Mengetahui IPAddress berdasarkan nama host

Buatlah class bernama IPFinder


Ketik kode program dibawah ini

Jalankan dan isi host name berdasarkan host name komputer local, Jelaskan yang terjadi ?

Teknik Informatika Universitas Merdeka Pasuruan 4


Modul Pemrograman Terdistribusi

Koneksikan komputer anda dengan komputer lain pada sebuah jaringan misalkan wifi-
umm
Tuliskan Bagaimana mengecek 2 komputer sudah saling terkoneksi ?
Cek koneksi, dan Setelah terkoneksi, Jalankan kembali program dan isi hostname dengan
mana komputer selain komputer local. Sampaikan apa yang terjadi ?

Mengirim pesan dengan socket TCP

Membangun Server TCP


Membuat objek ServerSocket. Kemudian bind objek tersebut pada port tertentu (1024-
65535).
Buat server dalam status menunggu. Gunakan metode accept() dari objek
ServerSocket.
Buat input dan output stream
Kirim dan terima data
Dari langkah diatas, ketik code program adalah seperti di bawah ini

Membangun Client TCP


Bangun koneksi ke server. Buat objek socket. Tentukan IP Address atau Hostname
mesin server dan nomor port dinama aplikasi server berjalan
Membuat input dan output stream
Dari langkah diatas, ketik code program adalah seperti di bawah ini

Teknik Informatika Universitas Merdeka Pasuruan 5


Modul Pemrograman Terdistribusi

Mengirim pesan antar aplikasi


Jalankan class tcp_server
Jalankan class tcp_client dan coba kirim pesan
Apa yang terjadi ?. screenshoot hasilnya?
Mengirim pesan kekomputer lain
Jalankan class tcp_server
Pada komputer lain yang telah terhubung pada satu jaringan ketik kembali kode
program tcp_client dan ganti ip address tujuan sesuai dengan ip server ()
Jalankan class tcp_client di komputer lain tersebut, dan coba kirim pesan.
Apa yang terjadi ?. screenshoot hasilnya?

Mengirim pesan dengan socket UDP

Membangun Server UDP


Buat class UDPServer
Ketik code dibawah ini :

Teknik Informatika Universitas Merdeka Pasuruan 6


Modul Pemrograman Terdistribusi

Membangun Client UDP


Buat class UDPClient
Ketik code dibawah ini :

Teknik Informatika Universitas Merdeka Pasuruan 7


Modul Pemrograman Terdistribusi

Mengirim pesan antar aplikasi


Jalankan class UDPServer
Jalankan class UDPClient dan coba kirim pesan
Apa yang terjadi ?. screenshoot hasilnya?
Ubah byte[] buffer = new byte[65536]; menjadi byte[] buffer = new byte[10]; baik
pada UDPServer dan UDPClient, perhatikan yang terjadi, apa pengaruhnya pada
pengiriman data.
Mengirim pesan kekomputer lain
Jalankan class tcp_server
Pada komputer lain yang telah terhubung pada satu jaringan ketik kembali kode
program tcp_client dan ganti ip address tujuan sesuai dengan ip server ()
Jalankan class tcp_client di komputer lain tersebut, dan coba kirim pesan.
Apa yang terjadi ?. screenshoot hasilnya?

Teknik Informatika Universitas Merdeka Pasuruan 8


Modul Pemrograman Terdistribusi

Aplikasi Chat sederhana dengan Socket TCP


Buatlah kelas dengan nama ServerChat
Ketik program di bawah ini

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashSet;

public class ServerChat {


private static final int PORT = 9001;
private static HashSet<String> names = new HashSet<>();
private static HashSet<PrintWriter> printWriters = new HashSet<>();

public static void main(String[] args) throws IOException {


System.out.println("server jalan pada port : " + PORT);
ServerSocket serverSocket = new ServerSocket(PORT);
try {
while (true) {
new Handler(serverSocket.accept()).start();
}
} catch (Exception e) {
System.out.println(e);
} finally {
serverSocket.close();
}
}

private static class Handler extends Thread {


private String name;
private Socket socket;
private BufferedReader bufferedReader;
private PrintWriter printWriter;

public Handler(Socket socket) {


this.socket = socket;
}

Teknik Informatika Universitas Merdeka Pasuruan 9


Modul Pemrograman Terdistribusi

public void run() {


try {
bufferedReader = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
printWriter = new PrintWriter(socket.getOutputStream(), true);

while (true) {
printWriter.println("submitname");
name = bufferedReader.readLine();

if (name == null) {
return;
}
synchronized (names) {

if (!names.contains(name)) {
names.add(name);
break;
}

}
}
printWriter.println("nameaccepted");
printWriters.add(printWriter);
while (true) {
String input = bufferedReader.readLine();

if (input == null) {
return;
}

printWriters.stream().forEach((pw) -> {
pw.println("message " + name + " : " + input);
});

}
} catch (IOException e) {
System.out.println(e);
} finally {
if (name != null) {
names.remove(name);
}
if (printWriter != null) {
printWriters.remove(printWriter);
}

try {
socket.close();
} catch (IOException e) {
System.out.println(e);
}
}
} Teknik Informatika Universitas Merdeka Pasuruan 10
}
}
Modul Pemrograman Terdistribusi

Buatlah kelas dengan nama ClientChat


Ketik program di bawah ini

import java.awt.event.ActionEvent;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ClientChat {


private BufferedReader bufferedReader;
private PrintWriter printWriter;
private JFrame jFrame = new JFrame("aplikasi chat");
private JTextField jTextField = new JTextField(40);
private JTextArea jTextArea = new JTextArea(8, 40);

public ClientChat() {
jTextField.setEditable(Boolean.FALSE);
jTextArea.setEditable(Boolean.FALSE);
jFrame.setSize(500, 500);
jFrame.getContentPane().add(jTextField, "North");
jFrame.getContentPane().add(new JScrollPane(jTextArea), "Center");
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
jFrame.setLocation((dimension.width / 2) - (jFrame.getSize().width / 2),
(dimension.height / 2) - (jFrame.getSize().height / 2));

jTextField.addActionListener((ActionEvent e) -> {
printWriter.println(jTextField.getText());
jTextField.setText("");
});
}

public String getServerAddress() {


return JOptionPane.showInputDialog(
jFrame,
"masukan ip address",
"selamat datang di aplikasi chat",
JOptionPane.QUESTION_MESSAGE
);
}

Teknik Informatika Universitas Merdeka Pasuruan 11


Modul Pemrograman Terdistribusi

public String getName() {


return JOptionPane.showInputDialog(
jFrame,
"Masukkan nama anda",
"selamat datang di aplikasi chat",
JOptionPane.QUESTION_MESSAGE
);
}

private void run() throws IOException {


String serverAddress = getServerAddress();
Socket socket = new Socket(serverAddress, 9001);
bufferedReader = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
printWriter = new PrintWriter(socket.getOutputStream(), true);

while (true) {
String line = bufferedReader.readLine();
if (line.startsWith("submitname")) {
printWriter.println(getName());
} else if (line.startsWith("nameaccepted")) {
jTextField.setEditable(Boolean.TRUE);
} else if (line.startsWith("message")) {
jTextArea.append(line.substring(8) + "\n");
}
}
}

public static void main(String[] args) throws IOException {


ClientChat clientChat = new ClientChat();
clientChat.jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
clientChat.jFrame.setVisible(Boolean.TRUE);
clientChat.run();
}

Jalankan class ServerChat


Jalankan class ClientChat dan coba kirim pesan
Pada komputer lain yang telah terhubung pada satu jaringan ketik kembali kode
program ClientChat dan masukkan ip address tujuan sesuai dengan ip server.
Jalankan class ClientChat di komputer lain tersebut, dan coba kirim pesan.
Apa yang terjadi ?. screenshoot hasilnya?

5. KESIMPULAN

Teknik Informatika Universitas Merdeka Pasuruan 12

Anda mungkin juga menyukai