Sunteți pe pagina 1din 9

Inicio

Eje m plos vb 6.0

O cx - Active x

Api vb

Tutoriale s - Manuale s

C digo fue nte

visual basic .ne t

Seccin de controles Ocx para Visual basic , Dll , Activex

Buscar

54 - Dll para hacer Ping y trace a un dominio


<Volver> - Anterior - Siguiente

Esta Dll Activex permite hacer un Ping y un Trace a un dominio y ver los resultados en un control textBox o Label

La Dll tiene 2 mtodos, uno llamado Ping y otro Trace.

Estos 2 tienen un parmetro en el cual se le debe enviar un control para mostrar el resultado, puede ser un control TextBox o Label. En el ejemplo , se le enva un textbox con el Multiline en True Antes de ejecutar estos mtodos, hay que indicar algunas propiedades, como el nombre del Host (propiedad NombreHost), el nmero de paquetes a enviar (propiedad nPaquetes) y si queremos obtener la Ip del dominio se debe consultar la propiedad IPHost

vista previa del ejemplo

Descargar Dll Click ac para ver el cdigo fuente

Ac hay otro cdigo fuente para hacer un ping a una direccin Ip y ver los milisegundos de respuesta y el estado Nota: En Este ejemplo, a la funcin que realiza el ping, debe ser la direccin Ip y no el nombre del Host. En este otro enlace pods ver una forma de recuperar el nombre a partir de la direccin IP :
Obtener la direccin IP a partir del nombre de Dominio

Pasos para crear el ejemplo


Colocar en el formulario un control Textbox y un CommandButton.

Cdigo fuente en el formulario

Option Explicit

' botn que realiza el Ping '''''''''''''''''''''''''''''''''''''''''' Private Sub Command1_Click() ' estructura con la informacin para hacer el Ping Dim ECHO As ICMP_ECHO_REPLY Dim TargetIP As String ' direccin ip Dim Ret As String TargetIP = Text1 If Len(TargetIP) > 0 Then ' hace el Ping ''''''''''''''''''''''''''''''''''''''''''''''''''' Call Ping(TargetIP, ECHO) ' muestra los resultados ''''''''''''''''''''''''''''''''''''''''''''''''''' Ret = "Direccin: " & TargetIP & vbNewLine ' Estado del Ping Ret = Ret & "Status: " & ECHO.status & vbNewLine If ECHO.status = 0 Then Ret = Ret & "Mensaje: " & "Successful" & vbNewLine Ret = Ret & "Tiempo: " & ECHO.RoundTripTime & " ms" & vbNewLine Else ' error al hacer ping Ret = Ret & "Mensaje: " & "Not successful" & vbNewLine End If Ret = Ret & "DataSize: " & ECHO.DataSize & " bytes" Else ' error Ret = Ret & "Mensaje: " & "Not successful" & vbNewLine End If

End If MsgBox Ret, vbInformation End Sub Private Sub Form_Load() Text1.Text = "64.233.161.104" Command1.Caption = " Hacer ping " End Sub

Ahora agregar un mdulo bas y el siguiente cdigo fuente:

Option Explicit Public msg As String Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const IP_STATUS_BASE = 11000 IP_SUCCESS = 0 IP_BUF_TOO_SMALL = (11000 + 1) IP_DEST_NET_UNREACHABLE = (11000 + 2) IP_DEST_HOST_UNREACHABLE = (11000 + 3) IP_DEST_PROT_UNREACHABLE = (11000 + 4) IP_DEST_PORT_UNREACHABLE = (11000 + 5) IP_NO_RESOURCES = (11000 + 6) IP_BAD_OPTION = (11000 + 7) IP_HW_ERROR = (11000 + 8) IP_PACKET_TOO_BIG = (11000 + 9) IP_REQ_TIMED_OUT = (11000 + 10) IP_BAD_REQ = (11000 + 11) IP_BAD_ROUTE = (11000 + 12) IP_TTL_EXPIRED_TRANSIT = (11000 + 13) IP_TTL_EXPIRED_REASSEM = (11000 + 14) IP_PARAM_PROBLEM = (11000 + 15) IP_SOURCE_QUENCH = (11000 + 16) IP_OPTION_TOO_BIG = (11000 + 17) IP_BAD_DESTINATION = (11000 + 18) IP_ADDR_DELETED = (11000 + 19) IP_SPEC_MTU_CHANGE = (11000 + 20) IP_MTU_CHANGE = (11000 + 21) IP_UNLOAD = (11000 + 22) IP_ADDR_ADDED = (11000 + 23) IP_GENERAL_FAILURE = (11000 + 50) MAX_IP_STATUS = 11000 + 50 IP_PENDING = (11000 + 255) PING_TIMEOUT = 400 'default was 200 WS_VERSION_REQD = &H101 WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF& WS_VERSION_MINOR = WS_VERSION_REQD And &HFF& MIN_SOCKETS_REQD = 1 SOCKET_ERROR = -1

Public Const MAX_WSADescription = 256 Public Const MAX_WSASYSStatus = 128 Public Type ICMP_OPTIONS Ttl As Byte Tos As Byte Flags As Byte OptionsSize As Byte OptionsData As Long

OptionsData End Type

As Long

Dim ICMPOPT As ICMP_OPTIONS Public Type ICMP_ECHO_REPLY Address As Long status As Long RoundTripTime As Long DataSize As Integer Reserved As Integer DataPointer As Long Options As ICMP_OPTIONS Data As String * 250 End Type Public Type HOSTENT hName As Long hAliases As Long hAddrType As Integer hLen As Integer hAddrList As Long End Type Public Type WSADATA wVersion As Integer wHighVersion As Integer szDescription(0 To MAX_WSADescription) As Byte szSystemStatus(0 To MAX_WSASYSStatus) As Byte wMaxSockets As Integer wMaxUDPDG As Integer dwVendorInfo As Long End Type

Public Declare Function IcmpCreateFile Lib "icmp.dll" () As Long Public Declare Function IcmpCloseHandle Lib "icmp.dll" _ (ByVal IcmpHandle As Long) As Long Public Declare Function IcmpSendEcho Lib "icmp.dll" _ (ByVal IcmpHandle As Long, _ ByVal DestinationAddress As Long, _ ByVal RequestData As String, _ ByVal RequestSize As Integer, _ ByVal RequestOptions As Long, _ ReplyBuffer As ICMP_ECHO_REPLY, _ ByVal ReplySize As Long, _ ByVal Timeout As Long) As Long Public Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long Public Declare Function WSAStartup Lib "WSOCK32.DLL" _ (ByVal wVersionRequired As Long, _ lpWSADATA As WSADATA) As Long Public Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long Public Declare Function gethostname Lib "WSOCK32.DLL" _ (ByVal szHost As String, _ ByVal dwHostLen As Long) As Long 'Public Declare Function gethostbyname Lib "WSOCK32.DLL" _

'Public Declare Function gethostbyname Lib "WSOCK32.DLL" _ (ByVal szHost As String) As Long Private Declare Function gethostbyname Lib "wsock32" _ (ByVal Hostname As String) As Long Public Declare Sub RtlMoveMemory Lib "kernel32" _ (hpvDest As Any, _ ByVal hpvSource As Long, _ ByVal cbCopy As Long) Private Declare Sub CopyMemory Lib "kernel32" _ Alias "RtlMoveMemory" _ (xDest As Any, _ xSource As Any, _ ByVal nbytes As Long) Public Function GetStatusCode(status As Long) As String

Select Case status Case IP_SUCCESS: Case IP_BUF_TOO_SMALL: Case IP_DEST_NET_UNREACHABLE: Case IP_DEST_HOST_UNREACHABLE: Case IP_DEST_PROT_UNREACHABLE: Case IP_DEST_PORT_UNREACHABLE: Case IP_NO_RESOURCES: Case IP_BAD_OPTION: Case IP_HW_ERROR: Case IP_PACKET_TOO_BIG: Case IP_REQ_TIMED_OUT: Case IP_BAD_REQ: Case IP_BAD_ROUTE: Case IP_TTL_EXPIRED_TRANSIT: Case IP_TTL_EXPIRED_REASSEM: Case IP_PARAM_PROBLEM: Case IP_SOURCE_QUENCH: Case IP_OPTION_TOO_BIG: Case IP_BAD_DESTINATION: Case IP_ADDR_DELETED: Case IP_SPEC_MTU_CHANGE: Case IP_MTU_CHANGE: Case IP_UNLOAD: Case IP_ADDR_ADDED: Case IP_GENERAL_FAILURE: Case IP_PENDING: Case PING_TIMEOUT: Case Else: End Select GetStatusCode = CStr(status) End Function

msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg msg

= = = = = = = = = = = = = = = = = = = = = = = = = = = =

"ip success" "ip buf too_small" "ip dest net unreachable" "ip dest host unreachable" "ip dest prot unreachable" "ip dest port unreachable" "ip no resources" "ip bad option" "ip hw_error" "ip packet too_big" "ip req timed out" "ip bad req" "ip bad route" "ip ttl expired transit" "ip ttl expired reassem" "ip param_problem" "ip source quench" "ip option too_big" "ip bad destination" "ip addr deleted" "ip spec mtu change" "ip mtu_change" "ip unload" "ip addr added" "ip general failure" "ip pending" "ping timeout" "unknown msg returned"

Public Function HiByte(ByVal wParam As Integer) HiByte = wParam \ &H100 And &HFF& End Function

Public Function LoByte(ByVal wParam As Integer) LoByte = wParam And &HFF& End Function

Public Function Ping(szAddress As String, ECHO As ICMP_ECHO_REPLY) As Long Dim Dim Dim Dim hPort As Long dwAddress As Long sDataToSend As String iOpt As Long

sDataToSend = "Echo This" dwAddress = AddressStringToLong(szAddress) Call SocketsInitialize hPort = IcmpCreateFile() If IcmpSendEcho(hPort, _ dwAddress, _ sDataToSend, _ Len(sDataToSend), _ 0, _ ECHO, _ Len(ECHO), _ PING_TIMEOUT) Then

Ping = ECHO.RoundTripTime Else: Ping = ECHO.status * -1 End If Call IcmpCloseHandle(hPort) Call SocketsCleanup End Function

Function AddressStringToLong(ByVal tmp As String) As Long Dim i As Integer Dim parts(1 To 4) As String i = 0 While InStr(tmp, ".") > 0 i = i + 1 parts(i) = Mid(tmp, 1, InStr(tmp, ".") - 1) tmp = Mid(tmp, InStr(tmp, ".") + 1) Wend i = i + 1 parts(i) = tmp If i <> 4 Then AddressStringToLong = 0 Exit Function End If AddressStringToLong = Val("&H" & Right("00" & Hex(parts(4)), 2) & _ Right("00" & Hex(parts(3)), 2) & _ Right("00" & Hex(parts(2)), 2) & _

Right("00" & Hex(parts(2)), 2) & _ Right("00" & Hex(parts(1)), 2)) End Function

Public Function SocketsCleanup() As Boolean Dim X As Long X = WSACleanup() If X <> 0 Then MsgBox "Windows Sockets error " & Trim$(Str$(X)) & _ " occurred in Cleanup.", vbExclamation SocketsCleanup = False Else SocketsCleanup = True End If End Function

Public Function SocketsInitialize() As Boolean Dim WSAD As WSADATA Dim X As Integer Dim szLoByte As String, szHiByte As String, szBuf As String X = WSAStartup(WS_VERSION_REQD, WSAD) If X <> 0 Then MsgBox "Windows Sockets for 32 bit Windows " & _ "environments is not successfully responding." SocketsInitialize = False Exit Function End If If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or _ (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And _ HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then szHiByte = Trim$(Str$(HiByte(WSAD.wVersion))) szLoByte = Trim$(Str$(LoByte(WSAD.wVersion))) szBuf = "Windows Sockets Version " & szLoByte & "." & szHiByte szBuf = szBuf & " is not supported by Windows " & _ "Sockets for 32 bit Windows environments." MsgBox szBuf, vbExclamation SocketsInitialize = False Exit Function End If If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then szBuf = "This application requires a minimum of " & _ Trim$(Str$(MIN_SOCKETS_REQD)) & " supported sockets." MsgBox szBuf, vbExclamation SocketsInitialize = False Exit Function End If SocketsInitialize = True

End Function

Enlaces relacionados No hay enlaces relacionados

Buscar en Recursos vb con Google Buscar

.NET Data and UI Controls Grids, C harts, Reports,& Schedulers ASP, WinForms, Silverlight and WPF www.com pone ntone .com /visuals TWAIN SDK for scanner ActiveX control for acquiring image from TWAIN scanner, editing, upload www.dynam soft.com /we b-twain Visual Basic Bases De Datos C lases Presenciales DF. Bsicos a Avanzados. $250/sem. C onsulta! www.3ct.m x

visual basic Buscar www.recursosvisualbasic.com.ar Recursos

Privacidad

Copyright

2005

2009

S-ar putea să vă placă și