24
Mar
10

Bagaimana Cara Mengecek Koneksi Internet Dengan VB?

Kadang-kadang kita ingin membuat sebuah program yang membutuhkan koneksi internet untuk updatenya. Selain itu, biasanya koneksi internet digunakan sebagai fasilitas verifikasi keaslian software. Tentunya kita perlu membuat sebuah prosedur untuk mengecek apakah koneksi internet tersedia atau tidak.

Berikut adalah potongan source code untuk mengecek ketersediaan koneksi internet. Seperti biasa, dalam fungsi kali ini kita akan menggunakan API.

Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInet As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Long

Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Private Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000

Private Sub CheckConnection()
Dim sTmp As String
Dim hInet As Long
Dim hUrl As Long
Dim Flags As Long
Dim url As Variant
hInet = InternetOpen(App.Title, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0&)


If hInet Then
Flags = INTERNET_FLAG_KEEP_CONNECTION Or INTERNET_FLAG_NO_CACHE_WRITE Or INTERNET_FLAG_RELOAD
hUrl = InternetOpenUrl(hInet, "http://www.yahoo.com", vbNullString, 0, Flags, 0)
If hUrl Then
MsgBox "Your computer is connected to Internet", vbInformation, "Checing connection"
Call InternetCloseHandle(hUrl)
Else
MsgBox "Your computer is not connected to Internet", vbInformation, "Checing connection"
End If
End If
Call InternetCloseHandle(hInet)
Me.Caption = sTmp
End Sub

Dan saatnya membahas baris per baris kode di atas.

Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInet As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Long

Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Private Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000

Mendeklarasikan fungsi dan konstanta yang akan kita gunakan. Saya masih agak bingung karena setelah saya cek di API Text Viewer-nya VB 6, saya tidak menemukan fungsi dan konstanta di atas. Mungkin saya akan update artikel ini begitu saya mendapat jawabannya.

InternetOpen berfungsi untuk menentukan karakteristik dari koneksi internet yang digunakan oleh aplikasi klien. Mempunyai tiga tipe akses, dalam hal ini kita hanya akan menggunakan INTERNET_OPEN_TYPE_PRECONFIG untuk mengambil konfigurasi dari registry. Dalam penggunaannya, InternetOpen akan membuat handle HINTERNET, di sini kita menampungnya dalam variable hInet bertipe Long. Penggunaan InternetOpen juga harus ditutup dengan fungsi InternetCloseHandle. Source.

InternetOpenUrl berfungsi untuk membuka suatu resource ber-URL HTTP atau FTP yang lengkap. Mempunyai beberapa parameter, salah satunya adalah handle HINTERNET yang harus dihasilkan oleh fungsi InternetOpen pada pemanggilan (call) sebelumnya. Parameter lainnya adalah dwFlags, di sini kita menggunakan INTERNET_FLAG_RELOAD, INTERNET_FLAG_KEEP_CONNECTION, dan INTERNET_FLAG_NO_CACHE_WRITE. INTERNET_FLAG_RELOAD akan memaksa terjadinya download dari file, object, atau list direktori yang diminta langsung dari servernya, bukan dari cache. Source.

InternetCloseHandle berfungsi menutup satu HINTERNET. Parameternya hanya satu, yaitu HINTERNET yang dihasilkan oleh InternetOpen dan menghasilkan boolean TRUE jika berhasil menutup atau FALSE jika sebaliknya. Source.

Private Sub CheckConnection()
Dim sTmp As String
Dim hInet As Long
Dim hUrl As Long
Dim Flags As Long
Dim url As Variant
hInet = InternetOpen(App.Title, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0&)

Mendeklarasikan variabel dan meng-assign handle yang valid ke variabel hInet. Namun jika InternetOpen gagal, return value-nya berupa NULL.


If hInet Then
Flags = INTERNET_FLAG_KEEP_CONNECTION Or INTERNET_FLAG_NO_CACHE_WRITE Or INTERNET_FLAG_RELOAD
hUrl = InternetOpenUrl(hInet, "http://www.yahoo.com", vbNullString, 0, Flags, 0)

Jika berhasil, InternetOpenUrl akan mengembalikan handle yang valid dan akan mengembalikan NULL jika sebaliknya.

If hUrl Then
MsgBox "Your computer is connected to Internet", vbInformation, "Checking connection"
Call InternetCloseHandle(hUrl)
Else
MsgBox "Your computer is not connected to Internet", vbInformation, "Checking connection"
End If
End If
Call InternetCloseHandle(hInet)
Me.Caption = sTmp
End Sub

Memberi message box tentang status koneksi internet dan langsung menutupnya dengan fungsi InternetCloseHandle.

Download Source Code Here.

Image source: seodm.wordpress.com


0 Responses to “Bagaimana Cara Mengecek Koneksi Internet Dengan VB?”



  1. Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Quotes of The Week

20 April 2010 - 26 April 2010

Imam Ahmad bin Hambal ditanya, "Kapan seorang hamba bisa istirahat?" Beliau menjawab, "Ketika kakinya menginjak syurga."

- Imam Ahmad bin Hambal

Blog Stats

  • 4,164 hits

Featured Image


Mount Fuji in Japan | kiraku.tv
Indahnya Gunung Fuji melatarbelakangi bunga sakura yang sedang bersemi. (Mar 23, 10)

Archives


%d bloggers like this: