Fungsi untuk mendapatkan alamat IP yang saya berikan disini menggunakan Windows API. Silahkan kode berikut diletakkan pada sebuah form.
Deklarasi konstanta untuk Windows API
Public Const MAX_WSADescription = 256Public Const MAX_WSASYSStatus = 128Public Const ERROR_SUCCESS As Long = 0Public Const WS_VERSION_REQD As Long = &H101Public Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&Public Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&Public Const MIN_SOCKETS_REQD As Long = 1Public Const SOCKET_ERROR As Long = -1Deklarasi Tipe Data baru
Public Type HOSTENThName As LonghAliases As LonghAddrType As IntegerhLen As IntegerhAddrList As LongEnd TypePublic Type WSADATA wVersion As IntegerwHighVersion As IntegerszDescription(0 To MAX_WSADescription) As ByteszSystemStatus(0 To MAX_WSASYSStatus) As BytewMaxSockets As IntegerwMaxUDPDG As IntegerdwVendorInfo As LongEnd Type Deklarasi fungsi API
Public Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As LongPublic Declare Function WSAStartup Lib "WSOCK32.DLL" _(ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As LongPublic Declare Function WSACleanup Lib "WSOCK32.DLL" () As LongPublic Declare Function gethostname Lib "WSOCK32.DLL" _(ByVal szHost As String, ByVal dwHostLen As Long) As LongPublic Declare Function gethostbyname Lib "WSOCK32.DLL" _(ByVal szHost As String) As LongPublic Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _(hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long) Fungsi DapatkanIP
Public Function DapatkanIP() As StringDim sHostName As String * 256Dim lpHost As Long Dim HOST As HOSTENTDim dwIPAddr As Long Dim tmpIPAddr() As ByteDim i As IntegerDim sIPAddr As StringIf Not SocketsInitialize() ThenDapatkanIP = ""Exit FunctionEnd IfIf gethostname(sHostName, 256) = SOCKET_ERROR ThenGetIPAddress = ""MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & _" Gagal mendapatkan nama host."SocketsCleanupExit FunctionEnd IfsHostName = Trim$(sHostName)lpHost = gethostbyname(sHostName) If lpHost = 0 ThenDapatkanIP = ""MsgBox "Windows Sockets tidak merespon. " & _"gagal mendapatkan nama host."SocketsCleanupExit FunctionEnd If CopyMemory HOST, lpHost, Len(HOST)CopyMemory dwIPAddr, HOST.hAddrList, 4ReDim tmpIPAddr(1 To HOST.hLen)CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLenFor i = 1 To HOST.hLensIPAddr = sIPAddr & tmpIPAddr(i) & "."Next DapatkanIP = Mid$(sIPAddr, 1, Len(sIPAddr) - 1) SocketsCleanupEnd Function Fungsi dan prosedur pendukung lainnya
Public Function HiByte(ByVal wParam As Integer)HiByte = wParam \ &H100 And &HFF&End FunctionPublic Function LoByte(ByVal wParam As Integer)LoByte = wParam And &HFF&End FunctionPublic Sub SocketsCleanup()If WSACleanup() <> ERROR_SUCCESS ThenMsgBox "Socket error pada pembersihan."End IfEnd SubPublic Function SocketsInitialize() As BooleanDim WSAD As WSADATADim sLoByte As StringDim sHiByte As String If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS ThenMsgBox "Windows socket tidak merespon."SocketsInitialize = FalseExit FunctionEnd If If WSAD.wMaxSockets < MIN_SOCKETS_REQD ThenMsgBox "Aplikasi ini membutuhkan minimal " & _CStr(MIN_SOCKETS_REQD) & " socket." SocketsInitialize = FalseExit FunctionEnd If Untuk menggunakan fungsi ini, anda tinggal memanggil fungsi DapatkanIP().
Contoh penggunaan pada MessageBox
Contoh penggunaan pada MessageBox
MsgBox "IP dari komputer ini adalah" & DapatkanIP()
No comments:
Post a Comment