Pemrograman Socket
Pemrograman Socket
MODUL I
PEMROGRAMAN SOCKET
1. TUJUAN
Mahasiswa memahami konsep pemprograman socket.
Mahasiswa memahami jenis jenis socket programming
Mahasiswa mampu membangun program socket sederhana
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.
Mengirim data
Menerima data
Menutup koneksi
Menerima koneksi dari mesin remote (mesin yang dikendalikan) pada port tertentu
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.
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
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 :
Buka Netbeans.
Buatlah Project Baru dengan nama mod1_socket.
Buatlah class dengan nama getIP_local
Ketik code program di bawah ini :
Jalankan dan isi host name berdasarkan host name komputer local, Jelaskan yang terjadi ?
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 ?
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;
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
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 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("");
});
}
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");
}
}
}
5. KESIMPULAN