Home > Visual Basic, Winsock > Belajar Winsock bagian akhir – Contoh kasus mengakses data stok barang dari luar

Belajar Winsock bagian akhir – Contoh kasus mengakses data stok barang dari luar

February 4, 2010

Akhirnya rilis juga artikel terakhir dari 5 seri belajar winsock ini, sebelum kita melanjutkan pembahasan ada baiknya kita melakukan sedikit review :

  1. Dasar-dasar penggunaan winsock sudah kita pelajari
  2. Ini terbukti dengan suksesnya kita membuat aplikasi chat sederhana
  3. Di tambah lagi ada teman kita yang mau nebeng sehingga terciptanya aplikasi chat multiple connection
  4. Jalan tol antara laptop mas Paijo dan komputer server tokonya juga udah selesai dibangun dengan anggaran 0 Rp 😀

Berarti sekarang waktu yang tepat untuk mencoba ketangguhan mas Win (maksudnya Winsock :D) kalo lari jarak dekat (jaringan LAN) masih bisa diandalkan, bagai mana dengan lari jarak jauh (via internet) apakah juga masih bisa diandalkan ?

Objek-objek yang akan dijadikan korban untuk uji coba kali ini :

  1. Database barang dengan format ms access
  2. Aplikasi server
  3. Aplikasi klien

Data yang dikirim dari server dibatasi maksimal 1024 karakter dalam sekali kirim, otomatis jika data > 1024 akan dipecah menjadi beberapa paket, berikut cuplikan kodenya (server) :

Option Explicit

Private Const LOCAL_PORT As Long = 1007

Private Const REC_SPR As String * 1 = "|" 'separator baris
Private Const FLD_SPR As String * 1 = "#" 'separator kolom
Private Const MAX_LIMIT As Long = 1024 '1x kirim dibatasi 1 kb, kalo untuk jaringan lokal masih bisa set 4096

Private Function pembulatanKeAtas(ByVal X As Double, Optional ByVal Factor As Double = 1) As Double
    Dim temp As Double

    temp = Int(X * Factor)
    pembulatanKeAtas = (temp + IIf(X = temp, 0, 1)) / Factor
End Function

Private Function getDataBarang(ByVal param As String) As String()
    Dim rs          As ADODB.Recordset

    Dim div         As Long
    Dim lengthData  As Long
    Dim n           As Long
    Dim i           As Long

    Dim tmp         As String
    Dim arrTmp()    As String

    strSql = "SELECT UCASE(nama), harga, stok FROM barang " & param & ""
    Set rs = openRecordset(strSql)
    If Not rs.EOF Then
        For i = 1 To getRecordCount(rs)
            tmp = tmp & rs(0).Value & FLD_SPR & rs(1).Value & FLD_SPR & rs(2).Value & REC_SPR

            rs.MoveNext
        Next i
        If Len(tmp) > 0 Then tmp = Left(tmp, Len(tmp) - 1)

        'karakter ~ sebagai penanda awal dan akhir data
        'untuk memudahkan pengecekan di klien bahwa data yg diterima sudah lengkap/belum
        'ex : ~DATA BARANG + SEPARATOR KOLOM DAN BARIS~

        'contoh format data disini ada 2 :
        '1. jika data <= 1024 karakter : ~~DATA BARANG + SEPARATOR KOLOM DAN BARIS
        '2. jika data > 1024 karakter  : ~DATA BARANG + SEPARATOR KOLOM DAN BARIS~

        If Len(tmp) > 0 Then tmp = "~" & Left(tmp, Len(tmp) - 1) & "~"
        If Not Len(tmp) > MAX_LIMIT Then
            tmp = Left(tmp, Len(tmp) - 1)
            tmp = "~" & tmp
        End If

        lengthData = Len(tmp)
        If lengthData > 0 Then
            If lengthData > MAX_LIMIT Then 'data > 1024 karakter
                'data dibuat menjadi beberapa package
                'ex : jika jumlah karakter 2345
                '     package 1 -> 1024
                '     package 2 -> 1024
                '     package 3 -> 297
                '     berarti data yg dikirim ke klien sebanyak 3 x

                div = pembulatanKeAtas(lengthData / MAX_LIMIT)
                ReDim arrTmp(div)

                n = 1
                For i = 1 To div
                    arrTmp(i - 1) = Mid(tmp, n, MAX_LIMIT)
                    n = n + MAX_LIMIT
                Next i

            Else
                ReDim arrTmp(0)
                arrTmp(0) = tmp
            End If

        Else
            ReDim arrTmp(0)
            arrTmp(0) = tmp
        End If

    Else
        ReDim arrTmp(0)
        arrTmp(0) = "EOF" 'data barang tidak ditemukan
    End If
    Call closeRecordset(rs)

    getDataBarang = arrTmp
End Function

pengiriman data ke klien akan dihandle oleh event DataArrival :

Private Sub Socket_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim i           As Long
    Dim strData     As String
    Dim ret         As Boolean

    Dim arrTmp()    As String

    'On Error GoTo errHandle

    ' Grab the data from the specified Winsock object, and pass it to the parent.
    Call Socket(Index).GetData(strData)
    DoEvents

    arrTmp = getDataBarang(strData)
    For i = LBound(arrTmp) To UBound(arrTmp)
        If Len(arrTmp(i)) > 0 Then ret = send(Index, arrTmp(i))
    Next i

    Exit Sub
errHandle:
   Call Socket(Index).Close
End Sub

sedangkan untuk aplikasi klien bagian yg bertugas menerima data masih di event yang sama yaitu DataArrival :

Private Sub Socket_DataArrival(ByVal bytesTotal As Long)
    Dim dataMasuk   As String

    'On Error Resume Next

    Socket.GetData dataMasuk

    If Left(dataMasuk, 2) = "~~" Then 'package data <= 1024
        Call execOutput(dataMasuk)

    ElseIf dataMasuk = "EOF" Then 'data tidak ditemukan
        Call execOutput(dataMasuk)

    Else
        'package data > 1024
        'berikut kode untuk penggabungan package data
        tmp = tmp & dataMasuk
        If InStr(1, dataMasuk, "~") > 0 Then packageHdr = packageHdr & "~"

        If Len(packageHdr) = 2 Then Call execOutput(tmp) 'penggabungan package data selesai
    End If
End Sub

dan ini prosedure yang bertanggung jawab untuk memparsing data dan menampilkan ke ListView :

Private Sub execOutput(ByVal data As String)
    Dim rec()   As String
    Dim fld()   As String

    Dim x       As Long
    Dim noUrut  As Long

    On Error GoTo errHandle

    Screen.MousePointer = vbHourglass
    DoEvents

    If Left(data, 2) = "~~" Then 'complete
        data = Replace(data, "~~", "")

    ElseIf data = "EOF" Then
        'do nothing

    Else
        data = Left(data, Len(data) - 1) 'remove ~ left
        data = Right(data, Len(data) - 1) 'remove ~ right
    End If

    lsvBarang.ListItems.Clear

    If data = "EOF" Then
        Screen.MousePointer = vbDefault
        MsgBox "Data barang dengan keyword '" & txtNamaBarang.Text & "' tidak ditemukan", vbInformation, "Informasi"

    Else
        'contoh data :
        '~~SUSU KEDELAI ABC 200M#1000#24|SUSU KEDELAI MELILEA 500#1000#0|KOPI SUSU KPL API 3P#1000#0|SUSU KEDELAI ABC 200#1000#2
        '| -> pemisah baris
        '# -> pemisah kolom

        rec = Split(data, REC_SPR)

        With lsvBarang
            noUrut = 1
            For x = LBound(rec) To UBound(rec)
                fld = Split(rec(x), FLD_SPR)

                .ListItems.Add , , noUrut
                .ListItems(noUrut).SubItems(1) = fld(0) 'nama barang
                .ListItems(noUrut).SubItems(2) = FormatNumber(fld(1), 0) 'harga
                .ListItems(noUrut).SubItems(3) = fld(2) 'stok

                noUrut = noUrut + 1
            Next x
        End With
    End If

    Screen.MousePointer = vbDefault

    Exit Sub
errHandle:
    Screen.MousePointer = vbDefault
End Sub

dan ini hasilnya

mas Paijo mengetikan keyword mie kemudian mengirimkannya ke server dan akan diproses dengan hasil rincian sbb :

  1. Jumlah record yang ditemukan sebanyak 181 record
  2. Jumlah karakter nama barang + harga + stok + seperator = 5084 karakter dan dikirim menjadi beberapa paket
  3. Hasil akhir klien juga menampilkan sebanyak 181 record, yang berarti bahwa uji coba kita berhasil 😀

Dan yang terpenting dari pembahasan ini, sample programnya bisa didownload disini 🙂

Selamat mencoba 🙂

  1. jimo
    February 25, 2010 at 9:54 am

    mas sharing filenya di indowebster aja ato klo metok2nya di ziddu aja
    lemot bngt di 4shared…

    btw, thanks berat atas ilmunya mas
    tetap berkarya!!!

  2. February 25, 2010 at 1:42 pm

    jimo :

    mas sharing filenya di indowebster aja ato klo metok2nya di ziddu aja
    lemot bngt di 4shared…

    btw, thanks berat atas ilmunya mas
    tetap berkarya!!!

    Oke mas Jimoe thank atas sarannya, akan saya pertimbangkan untuk mencari lokasi kos2xan yang baru 😀

  3. March 1, 2010 at 12:46 pm

    Kalau saya, disimpan dimanapun OK. Trims atas file-filenya.

  4. March 1, 2010 at 12:49 pm

    Asep Hibban :

    Kalau saya, disimpan dimanapun OK. Trims atas file-filenya.

    Oke sama2 mas 🙂

  5. anggi
    March 13, 2010 at 2:55 pm

    Mantep lah Kang! Lanjutkan! ^.^

  6. anggi
    March 13, 2010 at 3:01 pm

    Tapi,, ini kan di VB6 ya? kalau programnya VB. Net (05/08) bedanya apanya ya Kang? Jgn2 smwnya diganti,, coz kan beda bgt scriptnya juga,. Ada script VB. Net 05/08 untuk Winsock/cSocketMasternya gag Kang? Coz dpake bgt bwt project ne,, sya pakenya yg .Net soalnya,. Mkasih Kang!

  7. March 14, 2010 at 1:25 am

    anggi :

    Tapi,, ini kan di VB6 ya? kalau programnya VB. Net (05/08) bedanya apanya ya Kang? Jgn2 smwnya diganti,, coz kan beda bgt scriptnya juga,. Ada script VB. Net 05/08 untuk Winsock/cSocketMasternya gag Kang? Coz dpake bgt bwt project ne,, sya pakenya yg .Net soalnya,. Mkasih Kang!

    Kan di VB.NET ada fitur upgradenya jadi tinggal open aja project vb6, walaupun hasil upgradenya enggak 100% berhasil jadi sisanya diedit manual terutama yang berhubungan dengan fungsi api.

    Untuk referensi mungkin bisa baca buku UPGRADING Microsoft Visual Basic 6.0 To Microsoft Visual Basic .NET.

    Selamat mencoba 🙂

  8. Yudhi Purnomo
    March 25, 2010 at 8:34 am

    Kalau konkesi menggunakan Internet VPN atau pakai IP publik so oke..bisa nggak om mengulas memakai dial up lewat jaringan telp, dengan asumsi sewaktu mengirim data dial terlebih dahulu..thanks berat atas infonya

  9. March 25, 2010 at 9:08 am

    Thank mas yudhi atas masukannya, sy mungkin agak kesulitan mencobanya karena belum punya perangkat telp rumah :D.

    Trus mengenai dialup dulu ini, maksudnya seperti mau ngirim fax atau gimana? Pertanyaannya masih belum jelas.

  10. wawan
    April 24, 2010 at 5:03 pm

    Nice info mas…
    Btw linknya dah mati mas, bisa upload lagi? thx before

  11. April 24, 2010 at 5:40 pm

    wawan :

    Nice info mas…
    Btw linknya dah mati mas, bisa upload lagi? thx before

    Oke mas linknya udah aktif lagi, silahkan lanjut download

  12. wawan
    April 25, 2010 at 3:33 pm

    thx ya mas dah bagi2 ilmunya…

  13. April 26, 2010 at 1:24 am

    wawan :

    thx ya mas dah bagi2 ilmunya…

    Oke sama2x

  14. June 7, 2010 at 1:52 pm

    mas source code buat coneksi nya mana?????

  15. June 7, 2010 at 10:28 pm

    endo :

    mas source code buat coneksi nya mana?????

    Dicek aja om yg lebih teliti, yang jelas kode untuk koneksi winsock dan databasenya sudah ada di sample programnya.

  16. arik s
    June 20, 2010 at 3:27 pm

    mas, link untuk download source nya mati, bisa tolong d upload di server lain? saya sedang butuh untuk lengkapin modul tugas akhir saya, thank’s b4 mas.

    • June 20, 2010 at 4:23 pm

      Saya baru cek linknya berfungsi kok, silahkan dicoba lagi.

  17. arik s
    June 21, 2010 at 2:43 pm

    mas, saya sudah download sample winsock 4 nya.. thx,
    mas saya mau tanya,kasus saya :
    saya membangun program sistem rfid dengan vb6 database mysql dengan interface phpmyadmin. yang saya mau tanyakan :

    apakah database pada satu node pc bisa digunakan oleh program pada pc lain? (pc terhubung ke jaringan).kalau bisa bagaimana cara koneksinya? mohon pencerahannya..sebelumnya saya sudah membuat koneksi vb dngan mysql tetapi pada computer yang sama.

    • June 21, 2010 at 4:26 pm

      Yang jelas bisa hanya saja privilage user mysqlnya harus diatur untuk bisa login dari pc lain, untuk masalah ini coba mampir ke SINI.

      untuk koneksinya ya sama seperti konek lokal tinggal ganti attribut SERVERnya :

      DRIVER={MySQL ODBC 5.1 Driver};SERVER=IP_KOMPUTER;DATABASE=nama_db;UID=user_mysql;PWD=pass_mysql;OPTION=3
      
  18. July 12, 2010 at 1:06 pm

    mas qu cuman mau tanya nih,,
    program VB 6 qu ko komponennya banyk yg ga bisa ya, begitu ingin ku tmmbahin ke form malah muncul seperti ini:

    “License information for this component not found.You do not have an aproppriate license to use this functionality in the design environment”

    itu knp ya mas??

    terima kasih

    • July 12, 2010 at 1:48 pm

      Penyebabnya bisa saja :
      1. Waktu nginstall VBnya pake cd installer khusus VB, sy dengar cd installer khusus VB sering bermasalah sebaiknya pake cd installer Visual Studio
      2. Nama komponennya apa ya? DBGrid bukan ? Klo iya coba cek file dg ekstensi .reg di cd installer vbnya trus dijalankan. File tersebut biasanya 1 folder dg file ocxnya.

  19. niki
    August 17, 2010 at 6:42 am

    mas makaasih banget buat artikelnya yah, sangat membantu dalam pengerjaan tugas saya.
    nice info

    • August 18, 2010 at 1:41 am

      Oke sama2x 🙂

  20. lela
    September 22, 2010 at 5:10 am

    mas saya mo tanya kalo membuat aplikasi chating multiprotokol menggunakan ajax gimana y?saya sudah banyak tanya ksana sini tapi banyak g msh kurang mngerti.klo mas tw gimana ya mas cara&scriptnya?.klo mo blz kemail saya jg gpp.makasih sbelumnya

    • September 22, 2010 at 6:13 am

      Wah sory sekali mba, sy belom pernah coding menggunakan ajax.
      Kebetulan proyek sy selama ini desktop semua 😀

  21. November 11, 2010 at 1:40 am

    artikel bagus & bermanfaat sy udah nyicipin…!! yach membantu lah..! tp kalo untuk kita bisa input barang yang baru kodenya gimana yach bos ??

    • November 11, 2010 at 2:21 am

      Nyicipin, makanan kaleee he he he 😀

      Konsepnya masih sama kok om, tinggal buat aja command/keyword khusus pada saat mengirim ke server. ex :

      ins#kode_barang#nama_barang#harga
      

      Nah di aplikasi server kan ada pengecekan data yang masuk, jika diawali dg keyword ins berarti perintah untuk menginputkan data baru (tentunya data diatas harus diparsing terlebih dulu).

      Selamat mencoba 🙂

  22. erick
    January 18, 2011 at 6:24 am

    sampel codenya gak bisa didownload di 4shared mas…
    bisa diupdate?
    trims

    • January 18, 2011 at 7:12 am

      Oke om tq infonya, silahkan dicoba lagi.

  23. ferdi
    January 18, 2011 at 8:33 pm

    mas, thanks banget ea, kebetulan aq mw belajar bikin billing warnet, mungkin dengan winsock akan sangat membantu.
    tapi mas klo ada boleh donk tutorial program billing warnet, klo bisa dari VB dan Delphi mas, aq masih newbie di dunia pemrograman, tapi mw belajar. hehe
    nanti tolong dikirim via email ea mas, si_ip3y@yahoo.com

    thanks info’y…!
    sukses terus ea buat mas’y….

    • January 19, 2011 at 3:25 am

      Masih newbie ya om ? Setau sy ilmu itu didatangi bukan mendatangi.

      Ini ada sample billing warnet, silahkan dioprek.

  24. Ree
    February 19, 2011 at 10:21 pm

    Maaf Om… Koreksi Link donlot nya…
    yang di atas gak bisa…
    tapi sy nemu yg ini..
    “www.4shared.com/file/Ss6tARNZ/Winsock4.htm”

    • February 20, 2011 at 2:52 am

      Ok om, tq infonya
      tapi udah sy coba masih linknya masih bisa kok

  25. Anthon
    February 20, 2011 at 6:21 pm

    mas,,,mw nanya,,klu untuk menampilkan data pada klien,,tp dari Tabel yg berbeda,,,
    yg ada skrng kan untuk cek stock barang [ mis. TBLSTOCK ],,,klu misalnya d tmbahkan untuk cek hasil penjualan [ mis. TBLJUAL ],,,g mna cara.x,,,? mohon bantuan.x,,,
    thank’s b4…

    • February 21, 2011 at 2:33 am

      Revisi aplikasi server :
      1. Tambah fungsi baru di aplikasi servernya misal dengan nama getDataPenjualan yg tugasnya untuk melakukan query ke tbljual, jd om tinggal modif aja fungsi getDataBarang
      2. Untuk event Socket_DataArrival, harus ditambahkan kondisi untuk mengecek perintah yg dikirim dari klien. ex :

      rivate Sub Socket_DataArrival(Index As Integer, ByVal bytesTotal As Long)
          Dim i           As Long
          Dim strData     As String
          Dim ret         As Boolean
          
          Dim arrTmp()    As String
          Dim param()     As String
          
          On Error GoTo errHandle
          
          ' Grab the data from the specified Winsock object, and pass it to the parent.
          Call Socket(Index).GetData(strData)
          DoEvents
                  
          'contoh isi strData:
          ' barang#datang barang dicari
          ' 0      1
          ' jual#tanggal1#tanggal2
          ' 0    1        2
          
          param = Split(strData, "#")
          Select Case param(0)
              Case "barang"
                  arrTmp = getDataBarang(param(1))
          
              Case "jual"
                  arrTmp = getDataPenjualan(param(1), param(2))
          End Select
          
          For i = LBound(arrTmp) To UBound(arrTmp)
              If Len(arrTmp(i)) > 0 Then
                  ret = send(Index, arrTmp(i))
              End If
          Next i
          
          Exit Sub
      errHandle:
         Call Socket(Index).Close
      End Sub
      

      Revisi aplikasi klien :
      Waktu ngirim data ditambahkan keyword, misal :
      1. untuk data barang : barang#datang barang dicari
      2. untuk data penjualan : jual#tanggal1#tanggal2

      Selamat mencoba 🙂

  26. Dimas
    June 20, 2011 at 2:30 am

    mas, mau nanya tentang winsock, kalau diimplementasikan di windows mobile apakah bisa running seperti running di desktop atau pakai komponen apa yang semacam winsock untuk windows mobile, terima kasih.

  27. Gilang
    August 6, 2011 at 2:05 pm

    Malam mas,,sya mo tanya klo mo ambil jam dari server tapi DB pke MsAccess gmana y caranya at codingnya??n itu bebanin kinerja databasenya g??

    • August 8, 2011 at 2:13 am

      Enggak usah dari aksesnya om, tinggal gini aja klo mau ngambil tanggal server :

      Dim tglServer As Date
      
      tglServer = Format(Now, "yyyy/MM/dd")
      Debug.Print "Tgl Server : " & tglServer
      
  28. Gilang
    August 8, 2011 at 3:41 am

    btw code di atas pke componen Winsock mz??

    • August 8, 2011 at 4:07 am

      Iya om untuk ngirim ke kliennya pake winsock, bukannya ini membahas winsock om 😀

  29. Gilang
    August 9, 2011 at 9:56 am

    mz ttp g bsa tu,, ada contoh projectnya g ambil timer server pke winsock??btw kmrn ak dah dpet artikel ambil timer dari server tpi timer pasiv n pke protokol UDP jadi msih krang memuaskan..sblmnya thanx y mz ats jawabannya

  30. Gilang
    August 9, 2011 at 2:10 pm

    Jadi kyak contoh Winsock4,,Server Listening trus Klien yang aktif ambil data gtu mz

    • August 10, 2011 at 4:57 am

      Dicoba dulu om semua artikel sy yg berhubungan dengan winsock, itu sudah mengcover semua pertanyaan om.

  31. rahadian
    August 11, 2011 at 10:35 pm

    mas q mo tanya apa winsock di vb 6.0 untuk koneksinya memang terbatas untuk jaringan perr to perr apa nggak.klo enggak apa tolls tambahannya. bisa nggak q minta contoh pengujian tentang winsock di vb 6.0 klo bener2 hanya trbatas pada jaringan perr to perr.thanks sebelumnya.

    • August 12, 2011 at 1:10 am

      Enggak om, yg penting komputer yg digunakan untuk mencoba program winsocknya harus sudah terhubung.

      Si om sendiri lah yg harus nguji, contoh program sudah ada tinggal luangkan waktu untuk mencoba.

  32. November 8, 2011 at 2:48 am

    om mau tanya , kalau di buat user yang bisa di ganti settingan port dan ip addres nya untuk user, gimana cara nya yaa om??
    mohon bantuan na…..
    masih nyuuuwwwww… =D

  33. November 10, 2011 at 2:08 pm

    mas kalo untuk membuat aplikasi chat gmna mas (misalkan bikin aplikasi chat fb / ym sendiri ) mohon pencerahannya ,, :))

    • November 11, 2011 at 1:35 am

      Disini banyak contohnya om.

  34. December 14, 2011 at 4:33 am

    bagus sekali mas materinya, ada gak mas contoh aplikasi sederhana yang ada input, edit yang menggunakan fasilitas Winsock, baik dari sisi klien maupun server, terima kasih sebelumnya mas semoga sukses selalu

    • December 14, 2011 at 3:51 pm

      Coba ini om

  35. January 2, 2012 at 1:08 pm

    mas kalo itu kan pake listview, kalo pake datagrid control gmn caranya om???
    jadi di klien ntar pake datagrid plus bisa nginput data langsung???
    :hope:

    • January 3, 2012 at 1:19 pm

      Klo datagrid control sy udah lama enggak make om, pake listview aja 😀

  36. February 28, 2012 at 3:32 pm

    om, saya kan punya Acces Point dari TP-LINK, kalo pengen setting itu kudu konek via browser yg pake ip addres bawaan dari AP tadi..didalamnya ada data kayak SSID, SIGNAL STRENGHT, RANGE, CHANNEL de el el…lha saya mau buat aplikasi dari VB 6.0 buat baca semua data AP itu, tanpa harus masuk browser…caranya gimana ya om?? mohon bantuannya,
    makasih banyak om..

    • February 28, 2012 at 5:07 pm

      Wah klo informasi ini sy benar2x blank om, cuma setau sy untuk akses hardware itu ada sejenis SDK yg sudah disediain oleh vendornya.

      Coba aja om tanya ke agen reselernya mana tau ada (tapi sy sendiri kurang yakin :D)

      Tapi coba aja link berikut om, mana tau dapat pencerahan :
      1. Wireless Research API
      2. Managed Wifi API

  37. ahmad7802
    April 26, 2012 at 9:40 pm

    Om jujur aku blm ngerti dan paham masalah server dan klien boleh di katakan tdk tau sama sekali , dan terima kasih banyak buat om Admin lewat blog ini aku banyak belajar tentang pemograman khususnya vb6, klo kita dah buat Applikasi yg biasa berbasis database MySql dan pengen buat server dan klien … langkah2 yg harus kita buat apa saja … seperti konek ke server dan input data dari klien … dan terima kasih banyak Om Kamsiah….

    • April 27, 2012 at 9:59 am

      Client/Server adalah arsitektur jaringan yang memisahkan client (biasanya berupa aplikasi desktop, web, mobile dan lain-lain) dengan server.

      Aplikasi yang om buat menggunakan VB dan database MySQL itu sudah bisa dikategorikan dalam aplikasi client server meskipun baru 2-tier

      Gambar 2 tier

      Gambar 3 tier

  38. ahmad7802
    April 27, 2012 at 10:35 am

    Misal kita buat applikasi Admin tuk menampilkan semua data .. terus klo mau insert , delete , update dari clien gimana om ? apa kita harus buat applikasi seperti Admin jg ?

  39. Azharry
    May 31, 2012 at 5:17 am

    Nongol lagee nich mas. Sy pake logmein hamachi type mesh yang gratisan…. 😀 tapi kok lemooooooooootttttt banget, database pake mysql server 5. Kira kira nich ada gak cara atau data pump yang bisa dibuat untuk mempercepat akses klien ke server? matur nuwun…

  40. May 31, 2012 at 9:59 am

    Klo pake hamachi n langsung koneksi ke database ya lemot om, contoh diatas bisa cepat karena pake winsock.
    Yg pernah sy coba pake webservice om jadi tidak langsung koneksi ke databases.

    Atw coba buat server VPN sendiri pake openVPN

  41. June 1, 2012 at 3:46 pm

    Sebaiknya pilihan yang tepatnya pake apa yah oom? winsock atau webservice ?

    • June 1, 2012 at 3:56 pm

      Eh ada om eka, g mana kabarnya ? Masih aktif aja di i-bego, klo sy slient mode dulu :D.

      Tergantung om klo masih bertahan dan betah di VB 6 kayaxnya mau enggak mau tetap pake winsock walaupun ada library tambahan untuk VB 6 agar bisa mengakses web service.

      Yg jelas klo untuk ngeload data dalam jumlah besar agak sulit menggunakan winsock, karna harus pintar2x mensplit datanya, tapi klo datanya masih sedikit ya winsock mungkin masih bisa menjadi pilihan 🙂

      • June 1, 2012 at 4:06 pm

        Hehehe, saya sehat oom, mudah-mudahan om juga sehat, kasian om para jawara gak pernah ada yang nongol di forum i-bego,

        Memang pilihan terbaik NET yah oom ? dengan webservice-nya ? atau ada alternatif lainnya oom ?

        • June 1, 2012 at 4:18 pm

          Kan masih ada om eka jawaranya 🙂

          Yg jelas sy sendiri sudah merasakan kemudahan coding di .NET (C#), jujur saja klo skrg coding pake VB 6 sering error (soalnya sering ketambahan karakter ; diakhir perintah) 😀

          Klo di .NET sendiri banyak pilihannya om selain webservice bisa pake .NET Remoting atw WCF.

          Apalagi setelah mencoba install VB6 di Windows 8 jadi banyak errornya :(, yg jelas pelan2x tapi pasti om kayaxnya harus diangsur migrasinya mulai dari skrg 😀

          • June 1, 2012 at 4:28 pm

            Halah si om ada-ada aja, ane aja sering ketemu banyak kutu busuk, mana bisa jadi jawara 😀

            Ane tanya lagi om, maaf nih jadi merembet kemana-mana :D, kalau di sisi server sendiri sebaiknya yang benar-benar SO server atau SO selain serverpun tidak jadi masalah ?

            • June 1, 2012 at 4:37 pm

              Enggak harus pake SO Server om, yg jelas bisa diinstall IIS.

              Sy udah coba di XP, Win 2000, 2003 Server, Win 7, 2008 Server

              Hasilnya lancar 🙂

              • June 1, 2012 at 4:47 pm

                Mantabb, mulai terbuka nih gundah gulana ane oom 🙂

                semoga masih on :D, Database yang digunakan yang hasilnya lancar jaya itu apa yah oom ? Access ? MSSQL ? MySQL ? atau yang lainnya ?

                • June 1, 2012 at 4:50 pm

                  Untuk mysql dan sql server dua2xnya udah sy coba 🙂

                  • June 1, 2012 at 4:56 pm

                    Okke oom, dilanjutkan disini atau ditempat lain nih om diskusinya, soalnya ane masih banyak hal yang perlu ditanyakan,,, kesimpulan sementara yang saya ambil :”Jadi ngapain pake PHP kalau bahasa pemrograman desktop juga bisa” 😀

                    • June 1, 2012 at 5:02 pm

                      Setujuuuuu 🙂

                      Halah bilang aja males belajar pemrograman web 😛

                      Kapan2x deh, sy ingin membahas juga pembuatan web service dan mengaksesnya dari aplikasi desktop (C# edition) 😀

                      Insya Allah 🙂

  42. ahmad
    June 6, 2012 at 11:33 am

    Assalamu’alaikum om ,, mau tanya kalo buat auto update yang kaya program -program anti virus ( bisa otomatis cari file update dan langsung replace pada tempat instal ) dengan vb 6 gimana ya mohon pencerahannya.??

    • June 6, 2012 at 1:26 pm

      Wah klo ini sy belum pernah riset secara langsung om, mau ngasih pendapat juga takutnya malah jadi sesat dan menyesatkan :D.

      Tapi disini ada pembahasan tentang pembuatan auto update program mana tau bisa ngasih pencerahan :).

      Klo sy sendiri cuma memanfaatkan ftp service untuk melakukan update aplikasi secara otomatis, walaupun enggak canggih2x amat tetapi terbukti mempermudah sy melakukan proses update program :).

      • ahmad
        June 6, 2012 at 5:07 pm

        on An codingnya gini contoh mau update coding winshok dari blog ini. bisa replace langsung pada satu folder ,

        Dim b() As Byte
        
        Private Sub Command1_Click()
        End
        End Sub
        
        Private Sub Form_Load()
        Me.Show
        Dim URL As String
        Screen.MousePointer = vbHourglass
        lblStatus.Caption = "Downloading..."
        URL = "http://dc408.4shared.com/download/Ss6tARNZ/Winsock4.rar?tsid=20120606-095553-2bf32085"
        Inet1.URL = URL
        b() = Inet1.OpenURL(URL, icByteArray)
        Open "C:\Users\Ar-Rahman\Desktop\updater vb 6\Winsock4.rar" For Binary Access Write As #1
        Put #1, , b()
        Close #1
        lblStatus.Caption = "Download completed!"
        Screen.MousePointer = vbDefault
        Command1.Visible = True
        End Sub
        

        saya ingin program bisa capture url secara otomatis kaya ” internet download manager gitu ,, gimana om ???

  43. ahmad
    June 11, 2012 at 9:41 am

    omm mau tanya lagi ,,
    gimana caranya agar form saat resize secara otomatis komponen toolboxnya menyesuaikan ,,

    • June 11, 2012 at 12:48 pm

      Coba pake komponen ini om, tinggal ditempelin di form.

      • ahmad
        June 11, 2012 at 12:56 pm

        omm ini aktiv x yang free hanya bisa digunakan max 20 command kalo lebih harus buy hee hee ,,
        kalo yang algoritm punya ndak omm

  44. June 11, 2012 at 1:17 pm

    Enggak ada om, sy enggak terlalu mikirin hal2x yg seperti ini.

    • ahmad
      June 11, 2012 at 4:17 pm

      yaa trims omm

      • June 12, 2012 at 1:20 pm

        Oke, sama2x om

  45. cumie
    July 14, 2012 at 10:51 pm

    mantep kang mas bro,,

    • July 15, 2012 at 1:45 pm

      Oke om bro, tq udah mampir

  46. awik
    August 13, 2012 at 10:56 am

    bang mo tanya bank.. saya udah nyoba transfer data cukup lumayan banyak sukses di localhost tapi kalo saya coba dengan komputer lain data bisa tampil tapi data yang tampil menjadi tidak beraturan.. pa yang menjadi penyebabnya.. mohon pencerahanya bang… makasih sebelumnya

    • August 14, 2012 at 8:36 am

      Ya jumlah datanya dikurangi om, hasil uji coba sy diatas :
      1. Untuk jaringan lokalan bisa mengirim sebanyak 4096 (4 kb)
      2. Untuk jaringan internet sy kurangi menjadi 1024 (1 kb)

  47. Teguh
    September 30, 2012 at 6:36 pm

    Mas Admin mau tanya supaya alamt servernya ke ip hamchi gimana ya caranya ..maaf newbie

  48. October 17, 2012 at 12:09 pm

    saya ijin copy tulisan Anda dari latihan pertama sampai yg ini..plus ijin download contohnya ya mas

  49. Mustosoft
    March 8, 2013 at 4:26 pm

    Mas, kalo koneksi winsock bisa sambung ke komputer di luar jaringan lokal kagak? mohon jawabanya.. Thx

    • March 16, 2013 at 1:13 pm

      Bisa om, bukannya disini udah saya bahas.

  50. jkoe
    July 20, 2013 at 1:47 am

    wah bagus sekali artikel ini, cocok dengan ane yang lagi pingin nyoba buat aplikasi game client/server. tapi ada yang mau ane tanyain om, kalau sudah sukses bikin login hamchi dan sudah bisa ping antar pc, pada aplikasi klien ip host targetnya tetep 127.0.0.1 atau diganti dengan ip yang hamchi berikan? mohon pencerahannya om.. hehehehe.. btw, ane lagi bikin pake vb.net. oiya ada lagi om, saya menggunakan database mysql, database dan aplikasi server serta game server ada di satu kompi, tidak masalah kan yah?

    • July 20, 2013 at 10:54 am

      Iya aplikasi klien koneknya menggunakan ip yg dari hamachi, utk database kenapa enggak menggunakan ms access atau sqlite aja ?

  51. jkoe
    July 20, 2013 at 11:12 pm

    sqlite apaan lagi itu om? lebih simple dibandingkan mysql yah? untuk vb.net apa harus menggunakan .net remoting? saya cari-cari winsock tidak ada di vb.net nya.

  52. jkoe
    July 21, 2013 at 2:41 am

    om.. saya sudah googling mengenai sqlite, tapi masih belum begitu paham. kalau menggunakan sqlite, sqlitenya diinstal di pc server atau client? apa client tetap bisa mengakses database melalui vpn?

    aplikasi game yang saya ingin buat merupakan model client-server. kira-kira gambarannya seperti ini :
    1. client harus login terlebih dahulu, maka akan dilakukan validasi login ke database server
    2. setelah berhasil login, server akan mengirimkan pertanyaan soal ke client yang aktif. (bila tidak ada user yang aktif, server tetap menghasilkan pertanyaan soal tetapi tidak dikirim, hanya disimpan ke dalam database) pertanyaan yang dikirimkan bersifat live.
    3. client kemudian menjawab pertanyaan tersebut ke server, kemudian server akan menyimpan jawaban client ke dalam database.
    4. client juga bisa cek score yang tersimpan di database server.
    5. query paling hanya untuk reporting, insert, update, delete, dan kalkulasi nilai.
    6. sekarang ini, aplikasi server yang menghasilkan pertanyaan dan database mysqlnya ada di pc yang sama. client di pc yang berbeda.

    kalau aplikasi model tersebut apakah cocok menggunakan sqlite?

    • July 22, 2013 at 1:57 pm

      Klo saran sy sih yg mengakses database itu cukup aplikasi server aja, sehingga tidak perlu menggunakan database seperti MySQL alasannya sederhana untuk melakukan koneksi plus query ke database itu butuh resource yg lumayan banyak apalagi klo koneksinya via vpn yg dibuat pake hamachi.

      Nah untuk verifikasi login dari aplikasi klien kan bisa mengirimkan data dari klien ke server via socket, sehingga prosesnya lebih cepat.

      kalau aplikasi model tersebut apakah cocok menggunakan sqlite?

      Sangat cocok sekali

      Nah yg jadi PR om sekarang adalah meluangkan waktu untuk riset bagaimana menggunakan library TCP Client/Server di VB.Net, karna sudah tidak ada lagi Winsock di VB .NET

  53. August 13, 2013 at 8:32 am

    mas mau nanya klo mau buat login form kita tau dia online apa ga bisa ga ?
    connect nya ke msql hosting mas . klo detect username sama pass udah bisa . tinggal ini . nyari masalah nya . biar dia nda bisa login klo di PC laen masih ada yg login . thanks mas .

    • August 18, 2013 at 5:49 am

      Ya di tabel loginya tinggal ditambahkan aja field status, misal struktur tabelnya seperti berikut :
      user_name|password|status

      Nilai status awalnya 0, setelah login nilainya di set menjadi 1.

  54. Firdaus
    April 27, 2014 at 7:48 am

    salam kenal mas, butuh bantuannya ne…
    contoh program di atas saya aplikasikan ke program tugas akhir saya.
    nah yang saya bingung dan pusing puyeng-puyeng untuk ngirim data dari server ke client itu gmana ya, soalnya mlai kmaren saya coba pasti gak bisa. klo dari klient ke server sudah berhasil.
    terimakasih.

    salam pemula VB6.

  1. August 29, 2010 at 6:39 am
  2. April 16, 2014 at 9:12 am
Comments are closed.