ipi7530.pdf
description
Transcript of ipi7530.pdf
DINAMIKA INFORMATIKA – Vol I No 1, Maret 2009 ISSN : 2085-3343
Program Socket Untuk Mengirim File Dengan Visual Basic Pada Sistem Operasi Windows 1
PROGRAM SOCKET UNTUK MENGIRIM FILE DENGAN VISUAL BASIC PADASISTEM OPERASI WINDOWS
Hersatoto ListiyonoFakultas Teknologi Informasi, Universitas Stikubank Semarang
Abstrak :Terjadinya komunikasi antara dua komputer atau lebih memerlukan aturan dan format yang sama
agar komunikasi dapat dimengerti. Aturan ini yang disebut protokol. Penggunaan socket programmingmemungkinkan adanya komunikasi antara client dan server.Salah satu contoh sederhana penggunaansocket programming adalah pembuatan program untuk chatting.Program tersebut sebenarnya merupakanbentuk aplikasi berupa komunikasi antara client dan server.Ketika seorang user (client) melakukankoneksi ke chat server,program akan membuka koneksi ke port yang diberikan, sehingga server perlumembuka socket pada port tersebut dan “mendengarkan” koneksi yang datang. Socket sendirimerupakan gabungan antara host-address dan port address.Dalam hal ini socket digunakan untukkomunikasi antara client dan server
Kata kunci : protokol, socket, port
PENDAHULUAN
Socket adalah interface pada jaringanyang menjadi titik komunikasi antarmesin padaInternet Protocol, dan tentunya tanpakomunikasi ini, tidak akan ada pertukaran datadan informasi jaringan. Socket terdiri darielemen-elemen utama sebagai berikut:Protokol, Local IP, Local Port, Remote IP,Remote Port.
Sedangkan pemrograman socket adalahbagaimana memberi instruksi kepadaOperating System untuk dapat menggunakankomponen/API (Application ProgrammingInterface) socket dan kemudianmenggunakannya untuk berkomunikasi antarkomputer.
ProtokolDalam komunikasi antara beberapa
pihak, tentunya harus digunakan kesepakatanaturan dan format yang sama agar komunikasidapat dimengerti. Seperti halnya dua orangyang menggunakan bahasa yang sama, makabahasa di sini berfungsi sebagai protokol.Protokol yang digunakan dalam socket dapatmenggunakan TCP ataupun UDP.
Aplikasi socket umumnya terdiri daridua kategori berdasarkan pengiriman datanyayaitu: Datagram socket (menggunakan UDP)yaitu stream socket (menggunakan TCP).Walaupun sama-sama berfungsi sebagaiprotokol pertukaran data, terdapat perlakuanyang berbeda antara UDP dan TCP.
UDP tidak memerlukan proses koneksiterlebih dahulu untuk dapat mengirimkan data,paket-paket data yang dikirimkan UDP bisa
jadi melalui rute yang berbeda-beda, sehinggahasil yang diterima bisa jadi tidak berurutan.Contohnya jika aplikasi socket pengirimmengirimkan berturut-turut pesan 1, pesan 2,dan pesan 3, maka aplikasi socket penerimabelum tentu mendapatkan pesan yangberurutan dimulai dari pesan 1, pesan 2, danterakhir pesan 3. Bisa saja pesan 2 terlebihdulu diterima, menyusul pesan-pesan yanglain, atau berbagai kemungkinan lainnya.Bahkan, dapat terjadi pesan yang dikirimkantidak sampai ke penerima karena kegagalanpengiriman paket data.
Tidak demikian halnya dengan streamsocket yang menggunakan TCP. Jenis inimengharuskan terjadinya koneksi terlebihdahulu, kemudian mengirimkan paket-paketdata secara berurutan, penerima juga dijaminakan menerima data dengan urutan yang benar,dimulai dari data pertama yang dikirimkanhingga data terakhir. TCP dapat menanganidata yang hilang, rusak, terpecah, ataupunterduplikasi.
Dari sekilas perbedaan ini, kita dapatmenarik kesimpulan bahwa aplikasi socketyang menggunakan TCP memerlukanpertukaran data dua arah yang valid.Sedangkan, aplikasi socket yang menggunakanUDP lebih memprioritaskan padapengumpulan data.Karena itu aplikasi socket dengan TCP seringditerapkan untuk aplikasi chat, transfer le,ataupun transaksi-transaksi penting.Sedangkan aplikasi socket dengan UDP cocokditerapkan untuk aplikasi monitoring jaringan,game online, dan aplikasi-aplikasi broadcast.
DINAMIKA INFORMATIKA – Vol I No 1, Maret 2009 ISSN : 2085-3343
Program Socket Untuk Mengirim File Dengan Visual Basic Pada Sistem Operasi Windows 2
IP addressIP Address adalah sebuah alamat virtual
pada setiap computer untuk mengirimkan data, contoh dalam kehidupan nyata adalah setiapkita mengirim surat kita harus menyertakanalamat pengirim dan alamat tujuan , jika tidakada maka paket tidak bisa dikirim karena tidakjelas alamat pengirim dan alamat penerima.Contoh IP Address adalah 192.168.10.121
PortSalah satu elemen penting yang
digunakan dalam aplikasi socket adalah port.Port merupakan sebuah koneksi data virtualyang digunakan aplikasi untuk bertukar datasecara langsung. Terdapat banyak port didalam sebuah sistem komputer denganfungsinya masing-masing. Sebagai contoh,dalam mengirim e-mail digunakan serviceSMTP yang umumnya menggunakan port 25.Sementara service POP3 untuk menerima e-mail menggunakan port 110, port 80digunakan untuk HTTP, port 443 digunakanuntuk HTTPS, dan seterusnya. Nomor-nomorport dikategorikan dalam tiga jenis sebagaiberikut: well-known ports, yaitu merupakanport yang telah digunakan secara internal olehsistem Windows, misalnya port untuk koneksiInternet, service FTP, dan seterusnya. Portyang telah digunakan ini adalah port 0 sampaidengan port 1023. Yang kedua adalahregistered ports, yaitu port yang dapatdigunakan dalam aplikasi yang kita buat,range-nya adalah port 1024 hingga port 49151.Ketiga adalah dynamic/private ports yaitu port49152 sampai dengan port 65535.
WinsockUntuk pemrograman aplikasi socket
berbasis Windows, maka komponen API yangsering digunakan adalah Winsock (WindowsSocket API) yang mendukung interface standarTCP/IP, yang merupakan protokol jaringanpaling popular saat ini.
Jadi windows socket adalah perpaduanIP Address dan port number , contoh bila kitamengakses http://www.google.com , kitamisalkan google.com memiliki IP Address66.25.12.25 , sama saja anda mengaksesdengan http://www.google.com:80 atauhttp://66.25.12.25:80 atau untuk layananchatting seperti MIRC menggunakan port:6666 jadi cara kerja untuk mengakses MIRCadalah alamatserver:portnumber contoh kitaanggap IP Address untuk alamatserver chating
misalkan DALNET adalah: 121.122.204.12maka prosesnya adalah 121.122.204.12:6666
Diperlukan jaringan dengan minimaldua komputer yang saling terkoneksi untukmencoba pemrograman socket. Tapi dapat jugamenggunakan satu komputer untuk percobaan,yaitu dengan memanfaatkan alamat localhost(127.0.0.1) yang mengizinkan dua aplikasiberjalan pada satu mesin komputer danberkomunikasi satu sama lain.
Client-serverSetiap aplikasi di jaringan, transaksinya
didasarkan pada konsep client-server. Sebuahserver dan sebuah client atau beberapa clientyang meminta/request pelayanan ke server.Fungsi server sebagai pengatur resource yangada, yang menyediakan pelayanan denganmemanfaatkan resource yang untuk kebutuhanclient. Proses ini (proses client-server)dijalankan pada satu komputer berfungsisebagai server dan sebuah atau beberapakomputer berfungsi sebagai client. Hubungantersebut dapat digambarkan sebagai berikut :
gambar 1 Transaksi Client – server
Aplikasi client-server menggunakanprotokol tranport untuk saling berinteraksi.Ketika proses interaksi terjadi, suatu aplikasiharus memberikan informasiinformasi secaradetail tentang : informasi tentang apakah diaclient atau server, pengirim memberikaninformasi tentang data yang dikirim, penerimamemberikan informasi tentang dimana datadiletakkan, dll.
Antarmuka (interface) antara programaplikasi dengan protokol komunikasi padasuatu sistem operasi disebut ApplicationProgram Interface (API). API didefinisikansebagai suatu kumpulan instruksi yangmendukung proses interaksi antara suatuperangkat lunak dengan suatu protokol yangdigunakan.
2
DINAMIKA INFORMATIKA – Vol I No 1, Maret 2009 ISSN : 2085-3343
Program Socket Untuk Mengirim File Dengan Visual Basic Pada Sistem Operasi Windows 3
gambar 2 Aplikasi Jaringan
Pada saat suatu aplikasi berkomunikasi,awalnya aplikasi membuat socket baru, makapada aplikasi tersebut akan diberikan nomeryang digunakan sebagai referensi socket. Jikaada suatu sistem yang menggunakan nomerreferensi socket tersebut, maka akan terjalinsuatu jaringan komunikasi antar komputersebaik transfer data lokal.
gambar 3 komunikasi antar komputer
Untuk berkomunikasi antara server danclient harus tahu alamat kelas IP server apakahA, B atau C, seperti contoh di atas denganmenggunakan kelas C, yaitu 192.168.1.1 untukserver dan 192.168.1.2 untuk client, begitujuga nomor port server yang dituju haruslahsama. Disini memakai port 12345.
gambar 4 Ilustrasi Interface socket
Secara garis besar langkah – langkahyang dilakukan pada client dan server adalahsebagai berikut :1. Langkah – langkah dasar di server :
a. Membuat socket dengan perintahWinsock.Localport
b. Menyiapkan socket untuk menerimakoneksi yang masuk dengan perintahWinsock.Listen
c. Menerima koneksi yang masuk keserver dengan perintahWinsock_ConnectionRequest
d. Memastikan permintaan koneksiditerima dengan Winsock.AcceptrequestID
e. Melakukan komunikasi penerimaan datadengan perintah Winsock.GetData
f. Melakukan komnukasi pengiriman datadengan Winsock.SendData
2. Langkah – langkah dasar di client :a. Meminta koneksi client ke server, yang
di dalamnya adalah :- Melakukan pengalamatan ke server
dengan perintahWinsock.RemoteHost atauWinsock.HostIp.
- Melakukan koneksi port denganperintah Winsock.RemotePort.
- Menghubungi server denganWinsock.connect
b. Melakukan komunikasi penerimaan datadengan perintah Winsock.GetData
c. Melakukan komnukasi pengiriman datadengan Winsock.SendData
Fungsi-fungsi pemrograman jaringandalam visual basic antara lain :1. Winsock.Listen, fungsi ini membuat
winsock berstatus menunggu status darilocal port.
2. Winsock.LocalPort, fungsi ini mengunakanlokal port pada komputer yangbersangkutan untuk jalur komunikasi data,termasuk permintaan sambungan/ koneksi.
3. Winsock.Connect[RemoteHost/HostIP],[RemotePort], fungsiini digunakan untuk koneksi melalui HostIP(penggunaan IP Address) sebagai koneksike Host, beserta remoteport computer yangbersangkutan, dimana komputer serverdalam model status listen atau siap untukdikoneksi.
4. Winsock.Accept [requestID],fungsi inidigunakan untuk menerima koneksi dariclient dalam fungsiWinsock_ConnectionRequest. Dan perintahberikutnya permintaan diterima harusdilaksanakan dengan perintahWinsock.Accept requestID.
5. Winsock.SendData [Data],fungsi inidigunakan untuk mengirim. Data yangdikirim dapat berbentuk string atau bytearray, tapi disarankan dalam bentuk string.
6. Winsock.GetData [Data],[Type],[MaxLen],fungsi ini digunakan untuk menerima
LocalPort HostIPRemotePort
Listen
Accept
Connect
Senddata GetData
GetData Senddata
Close Close
ConnectionRequest
Client/ServerSession
ClientServer
Server Client
Server Socket address192.168.1.1 : 12345
Server Socket address192.168.1.2 : 12345
Connection Socket pair(192.168.1.1 : 12345,
192.168.1.2:12345)
Server Host address192.168.1.2
Client Host address192.168.1.2
DINAMIKA INFORMATIKA – Vol I No 1, Maret 2009 ISSN : 2085-3343
Program Socket Untuk Mengirim File Dengan Visual Basic Pada Sistem Operasi Windows 4
kiriman data dari Winsock control, dimanaData dapat berbentuk variable, and Type =vbString,vbInteger etc. MaxLen bersifatopsional.
7. Winsock.RemoteHostIP [IPAddress],fungsi ini digunakan untuk cara koneksi keserver dengan mengunakan metode IPaddress.
Penjelasan Program :Untuk Client :Objects yang diperlukan : MSWINSCK.OCX,comdlg32.OCXControls: wsTCP (Winsock), cmdSend(CommandButton), dlg (CommonDialog),cmdBrowse (CommandButton), txtFile(TextBox), lblStatus (Label)
gambar 5 Aplikasi client
Source Code untuk Client:
Untuk Server :Objects yang diperlukan : MSWINSCK.OCXControls: Frame1 (Frame), Dir1(DirListBox), Drive1(DriveListBox), cmdRun(CommandButton), wsTCP (Winsock)
gambar 6 Aplikasi server
Source code untuk Server:
If temp = "OK" Then Wstcp(1).SendData buffer Else Lblstatus = "Something wrong" Unload Wstcp(1) Cmdsend.Enabled = True End IfEnd Sub
Private Sub Wstcp_SendComplete(index AsInteger)If temp = "OK" Then Lblstatus = "Send complete" temp = "" Unload Wstcp(1) Cmdsend.Enabled = True End IfEnd Sub
Private Sub Wstcp_SendProgress(index AsInteger, ByVal bytesSent As Long, ByValbytesRemaining As Long)If temp = "OK" ThenlBytes = lBytes + bytesSentLblstatus = lBytes & " out of " &UBound(buffer) & " bytes sent"End IfEnd Sub
Dim lPos As LongDim bOK As BooleanDim fname As StringPrivate Sub cmdRun_Click() If Cmdrun.Caption = "Run" Then Cmdrun.Caption = "Stop" wsTCP(0).LocalPort = 25000 wsTCP(0).Listen Else wsTCP(0).Close Cmdrun.Caption = "Run" End IfEnd Sub Private Sub Drive1_Change() Dir1.Path = Drive1.DriveEnd Sub
Dim buffer() As ByteDim lBytes As LongDim temp As String
Private Sub cmdBrowse_Click() dlg.ShowOpen txtfile = dlg.FileNameEnd Sub
Private Sub cmdSend_Click() Cmdsend.Enabled = False lBytes = 0 ReDim buffer(FileLen(dlg.FileName) -1) Open dlg.FileName For Binary As 1 Get #1, 1, buffer Close #1 Load Wstcp(1) Wstcp(1).RemoteHost = "localhost" Wstcp(1).RemotePort = 25000 Wstcp(1).Connect Lblstatus = "Connecting..."End Sub
Private Sub Wstcp_Close(index AsInteger)Lblstatus = "Connection closed"Unload Wstcp(1)End SubPrivate Sub Wstcp_Connect(index AsInteger)Lblstatus = "Connected"Wstcp(1).SendData dlg.FileTitle & vbCrLfEnd SubPrivate Sub Wstcp_DataArrival(index AsInteger, ByVal bytesTotal As Long)Wstcp(1).GetData tempIf InStr(temp, vbCrLf) <> 0 Then temp =Left(temp, InStr(temp, vbCrLf) - 1)
4
DINAMIKA INFORMATIKA – Vol I No 1, Maret 2009 ISSN : 2085-3343
Program Socket Untuk Mengirim File Dengan Visual Basic Pada Sistem Operasi Windows 5
KESIMPULAN1. Aplikasi pada jaringan komputer,
transaksinya didasarkan pada konsepclient-server.
2. Aplikasi client-server menggunakanprotokol tranport untuk saling berinteraksi.
3. Protokol yang digunakan pada programpengiriman file ini adalah protokol TCP.Sdangkan socketnya adalah Winsock(Windows Socket API) untuk mendukunginterface standar TCP/IP
4. Windows socket adalah perpaduan IPAddress dan port number ,
5. Objects yang diperlukan pada programpengiriman file adalah MSWINSCK.OCX,comdlg32.OCX
DAFTAR PUSTAKA
docs.python.org/library/socket.htmlforum.vb-bego.com/viewtopic.phphttp://www.aswin.web.ugm.ac.id/content/view/
51/2ilmukomputer.org/2006/09/27/pemrograman-
socket-dengan-cinf.uajy.ac.id/~kusnadi/wp-
content/uploads/tutorial1.pdfj3ck3y.wordpress.com/2008/06/05/pemrogra
man-socket-jaringanjava.sun.com/j2se/1.4.2/docs/api/java/net/Sock
et.html
lecturer.ukdw.ac.id/anton/download/PEMROGRAMAN%20JARINGAN-Modul6.pdf
mti.ugm.ac.id/~yudhistira/ResourceMTI/Tutorial/Cawu01/Computer%20Network/SOCKET.ppt
olm.limnologi.lipi.go.id/masagus/document/index.php?action=download&filename=Pemrograman%20Jaringan%20TCP...pdf
pk.datacrux.org/module.php?module=userpage&menu=104&page_id=5
sidecode.blogspot.com/2008/12/simple-programing-socket-on-visual.html
www.opengroup.org/onlinepubs/000095399/functions/socket.html
www.lowtek.com/socketswww.troubleshooters.com/codecorn/socketswww.troubleshooters.com/codecorn/socketswww.benpinter.net/article.php?story=2004081
1203905729www.uwo.ca/its/doc/courses/notes/socket/ -
45kwww.prasannatech.net/2008/07/socket-
programming-tutorial.htmlwww.kangmaman.com/node/147www.osix.net/modules/article/?id=25
Private Sub wsTCP_Close(index AsInteger) Close #1 Unload wsTCP(1) bOK = FalseEnd SubPrivate SubwsTCP_ConnectionRequest(index AsInteger, ByVal requestID As Long) Load wsTCP(1) wsTCP(1).Accept requestIDEnd Sub
Private Sub wsTCP_DataArrival(index AsInteger, ByVal bytesTotal As Long)If Not bOK ThenwsTCP(1).GetData fnameIf InStr(fname, vbCrLf) <> 0 Then fname= Left(fname, InStr(fname, vbCrLf)-1) bOK = True If Dir(Dir1.Path & "\" & fname) <>"" Then Kill Dir1.Path & "\" & fname Open Dir1.Path & "\" & fname ForBinary As 1 lPos = 1 wsTCP(1).SendData "OK" & vbCrLf Else Dim buffer() As Byte wsTCP(1).GetData buffer Put #1, lPos, buffer lPos = lPos + UBound(buffer) + 1 End IfEnd Sub