Anda di halaman 1dari 11

FILE TRANSFER TCP SOCKET WITH JAVA

Oleh:
Ayip Nugraha (41113532)
Dedi Iskandar (42113117)
Riki Yunus (47113699)

Teknik Komputer
Universitas Gunadarma
2016

Abstrak
Pemrograman socket atau Socket Programming adalah salah satu cara yang
dapat digunakan untuk mengembangkan software dengan arsitektur Client Server.
Aplikasi yang dikembangkan menggunakan teknik seperti ini banyak digunakan
untuk dunia internet, security dan para internet hacker khususnya. Pemahaman
tentang protokol, socket, port, OSI layer, API, dan pengalamatan sangat
diperlukan bila ingin melakukan teknik ini. Bahasa Java merupakan salah satu
bahasa yang sangat mendukung untuk membuat pemrograman socket.

BAB I
PENDAHULUAN
1.1 Latar Belakang
Pada mulanya, sebuah komputer hanya dapat dipergunakan secara
individual (stand alone). Namun perkembangan teknologi digital telah
memungkinkan sebuah komputer untuk dapat berkomunikasi dengan
komputer lain. Secara sederhana, dengan menggunakan sebuah kabel dan
port komunikasi, dua buah komputer atau lebih dapat dihubungkan dan saling
bekerjasama. Jika dua buah komputer (A dan B) saling dihubungkan, maka
hal-hal yang dapat dilakukan antara lain: komputer A dapat mengakses filefile yang ada di komputer B, komputer A dapat mengakses disk drive dari
komputer B, komputer A dapat mengirimkan data ke komputer B, dan lain
sebagainya.
Komunikasi antara dua komputer ini dapat pula melalui soket, contohnya
adalah TCP soket (stream socket) dan UDP soket (datagram socket).
Perbedaan dari kedua soket ini adalah, TCP melakukan handshaking terlebih
dahulu, sedangkan UDP tidak ada handshaking.
Dalam pengiriman data, stream socket lebih unggul daripada datagram
socket, karena data yang dikirimkan akan lebih terjamin. Dalam penulisan ini,
kami akan membahas bagaimana TCP socket dapat mengirimkan file dari
komputer 1 (server) ke komputer 2 (client).
1.2 Rumusan Masalah
- Bagaimana PC1 (server) dan PC2 (client) dapat terhubung?
- Bagaimana file bisa dikirim dari PC1 (server) ke PC2 (client)?
1.3 Tujuan
- Mengetahui bagaimana 2 PC dapat terhubung menggunakan soket
- Mengetahui cara pengiriman file melalui soket TCP

BAB II
PEMBAHASAN
2.1 Kajian Teori
2.1.1 Socket
Socket adalah sebuah abstraksi perangkat lunak yang digunakan sebagai
suatu "terminal" dari suatu hubungan antara dua mesin atau proses yang
saling berinterkoneksi.
Socket biasa digunakan untuk pemrograman berbasis client-server yang
dapat menggunakan socket TCP/I atau socket UDP.
Socket akan membangun komunikasi antar proses yang sama-sama aktif.
[1]
Berikut adalah ilustrasi komunikasi antara 2 mesin dengan menggunakan
socket:

Gambar 1: Komunikasi antara 2 mesin dengan socket [2]


Kombinasi yang membentuk socket:
Protocol
-

Transport protocol, raw IP, atau yang lainnya

Local socket address


-

Local IP address dan port number

Remote socket address


-

Hanya untuk membangun TCP socket

Tipe-tipe socket:
Datagram socket
-

Connectionless socket, menggunakan UDP

Stream socket
-

Connection-oriented socket, menggunakan TCP atau Stream control


transmission protocol (SCTP).

Raw socket (Raw IP socket)


-

Biasanya terdapat pada router dan peralatan network lainnya

Gambar 2: Letak socket [2]


2.1.2 TCP
TCP socket adalah sebuah soket yang memiliki sifat antara lain:
Connection-oriented
Sebelum data dapat ditransmisikan antara dua host, dua proses yang
berjalan pada lapisan aplikasi harus melakukan negosiasi untuk membuat
sesi koneksi terlebih dahulu.
Full-duplex
Data dapat secara simultan diterima dan dikirim.
Reliable
Data yang dikirimkan ke sebuah koneksi TCP akan diurutkan dengan
sebuah nomor urut paket dan akan mengharapkan paket positive
acknowledgment dari penerima.
Byte stream
TCP melihat data yang dikirimkan dan diterima melalui dua jalur
masuk dan jalur keluar TCP sebagai sebuah byte stream yang berdekatan
(kontigu). [1]
2.2 Rancangan dan Implementasi
2.2.1 Flowchart

Membuat socket

Menyiapkan file yg akan dikirimkan


Membuat socket

Accept

Connect

Mengirim file

Menerima file

Read

Tutup socket

Tutup socket

2.2.2 Listing Program


- Server
import java.io.*;
import java.net.*;
public class Server {
public final static int SOCKET_PORT = 13267; // Anda dapat
mengubah ini
public final static String FILE_TO_SEND = "C:/Users/Riki
Yunus/Downloads/Music/Mahou No Hito - Hanako Oku.mp3"; // Anda
dapat mengubah ini
public static void main (String [] args ) throws IOException {
FileInputStream fis = null;
BufferedInputStream bis = null;
OutputStream os = null;
ServerSocket servsock = null;
Socket sock = null;
try {
servsock = new ServerSocket(SOCKET_PORT);
while (true) {

System.out.println("Menunggu...");
try {
sock = servsock.accept();
System.out.println("Menerima koneksi : " + sock);
// Mengirim file
File myFile = new File (FILE_TO_SEND);
byte [] mybytearray = new byte [(int)myFile.length()];
fis = new FileInputStream(myFile);
bis = new BufferedInputStream(fis);
bis.read(mybytearray,0,mybytearray.length);
os = sock.getOutputStream();
System.out.println("Sending " + FILE_TO_SEND + "(" +
mybytearray.length + " bytes)");
os.write(mybytearray,0,mybytearray.length);
os.flush();
System.out.println("Selesai!");
}
finally {
if (bis != null) bis.close();
if (os != null) os.close();
if (sock!=null) sock.close();
}
}
}
finally {
if (servsock != null) servsock.close();
}
}
}
-

Client
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class Client {
public final static int SOCKET_PORT = 13267;

// Anda dapat

mengubah ini
public final static String SERVER = "127.0.0.1"; // localhost
public final static String
FILE_TO_RECEIVED = "C:/Users/Riki Yunus/Downloads/UDP
Client-Server/Mahou No Hito - Hanako Oku.mp3"; // Anda dapat
mengubah ini

public final static int FILE_SIZE = 6022386; // harus lebih besar dari
ukuran file yang akan dikirim
public static void main (String [] args ) throws IOException {
int bytesRead;
int current = 0;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
Socket sock = null;
try {
sock = new Socket(SERVER, SOCKET_PORT);
System.out.println("Mengkoneksikan...");
// menerima file
byte [] mybytearray = new byte [FILE_SIZE];
InputStream is = sock.getInputStream();
fos = new FileOutputStream(FILE_TO_RECEIVED);
bos = new BufferedOutputStream(fos);
bytesRead = is.read(mybytearray,0,mybytearray.length);
current = bytesRead;
do {
bytesRead =
is.read(mybytearray, current, (mybytearray.length-current));
if(bytesRead >= 0) current += bytesRead;
} while(bytesRead > -1);
bos.write(mybytearray, 0 , current);
bos.flush();
System.out.println("File " + FILE_TO_RECEIVED
+ " diterima (" + current + " bytes read)");
}
finally {
if (fos != null) fos.close();
if (bos != null) bos.close();
if (sock != null) sock.close();
}
}
}

BAB III
EVALUASI
3.1 Metode
- Study literatur berupa pengumpulan referensi dari buku-buku maupun dari
-

internet berupa jurnal-jurnal dan artikel-artikel.


Studi kasus terhadap aplikasi yang telah dibuat sebelumnya. Tahap ini
dilakukan guna memahami prinsip kerja dari aplikasi yang telah dibuat

sebelumnya.
Perancangan sistem software.
Pembuatan sistem software.
Analisa dan kesimpulan hasil perancangan dapat dilakukan dengan cara
menjalankan aplikasi yang telah dibuat.

3.2 Ruang Lingkup


- Aplikasi File Transfer TCP Socket.
- 2 Laptop (1 sebagai server, 1 sebagai client).
- 1 File yang siap dikirimkan dari server ke client.
- Aplikasi dapat mengirimkan file dari server ke client.
3.3 Hasil & Analisis
- Hasil
File berhasil terkirim dari server ke client.

Gambar 3: Menjalankan aplikasi


Analisis
Kami telah menganalisis bahwa aplikasi dapat berjalan dengan lancar.
Server dan client dapat terhubung tanpa ada gangguan apapun. Tapi
program kami masih belum bisa untuk mengirimkan file dan kemudian
saling bertukar data. Dan juga, program kami masih belum bisa untuk
mengatur bagaimana agar aplikasi dapat keluar sesuai keinginan
pengguna.

Harapan kami untuk ke depannya, semoga program kami dapat lebih


baik lagi.

BAB IV
PENUTUP
Demikian yang dapat kami paparkan mengenai File Transfer TCP Socket
With Java yang menjadi pokok bahasan dalam laporan ini, tentunya masih
banyak kekurangan dan kelemahannya, karena terbatasnya pengetahuan dan
kurangnya rujukan atau referensi yang ada hubungannya dengan laporan ini.
Penulis banyak berharap para pembaca memberikan kritik dan saran yang
membangun kepada penulis demi kesempurnaan laporan ini dan penulisan
laporan di kesempatan-kesempatan berikutnya. Semoga laporan ini berguna
bagi penulis pada khususnya dan para pembaca pada umumnya.
4.1 Kesimpulan
TCP Socket lebih unggul dibandingkan dengan Datagram Socket untuk
aplikasi yang berkenaan dengan pertukaran data yang mengandalkan
kehandalan dalam pengirimannya. TCP memastikan data yang dikirim tidak
ada yang hilang, tidak ada yang rusak dan tidak adanya duplikasi data.
Pemrograman socket dengan bahasa pemrograman Java, jauh lebih mudah
dibandingkan dengan bahasa pemrograman C/C++. Jauh lebih mudah
dimengerti bagi programmer pemula.
4.2 Saran
- Lebih banyak mencari rujukan atau referensi yang hubungannya dengan
-

materi.
Kurangnya belajar tentang TCP Socket Programming dengan Java.

Referensi
[1] Agry Alfiah. 2011. TCP Sockets Programming. Pemrograman Jaringan.
Diakses 14 Mei 2016, dari
http://agry_alfiah.staff.gunadarma.ac.id/Downloads/files/25199/TCP+Socket.
pdf
[2] Introduction to Socket Programming.
http://alumni.cs.ucr.edu/~ecegelal/TAw/socketTCP.pdf

Anda mungkin juga menyukai