• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Fatal1ty

[Dúvida]Criar programa para guardar IP

8 mensagens neste tópico

Boas,

Gostava de pedir ajuda, pois não percebo muito da vb.

É assim eu queria fazer um programa que ao clicar no botão ele visse o meu IP e guarda-se ele numa BD, criando assim uma lista de IP's e que ao registar verifica-se se o IP já existe ou não na BD, caso exista apareça um alerta, caso contrário guarda o novo IP na BD.

Gostava que me dessem umas ideias de como fazer :(

Espero que entendam a ideia e ajudem :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Gostava de pedir ajuda, pois não percebo muito da vb.

É assim eu queria fazer um programa que ao clicar no botão ele visse o meu IP e guarda-se ele numa BD, criando assim uma lista de IP's e que ao registar verifica-se se o IP já existe ou não na BD, caso exista apareça um alerta, caso contrário guarda o novo IP na BD.

Gostava que me dessem umas ideias de como fazer :(

Espero que entendam a ideia e ajudem :P

Ninguem aqui te vai fazer o programa. aconselho-te a mostrares o que tens até agora e dizeres concretamente qual o teu problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O meu problema é criar a base de dados e a verificação dos mesmos.

E não sei como obter o IP de Internet.

EDIT: Tou a usar o winsock, para obter o IP, mas não consigo obter o de Internet só consigo o de rede local

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Codigo ex: de optenção de IP (Máquina) :

Private Const MAX_WSADescription = 256
Private Const MAX_WSASYSStatus = 128
Private Const ERROR_SUCCESS As Long = 0
Private Const WS_VERSION_REQD As Long = &H101
Private Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
Private Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
Private Const MIN_SOCKETS_REQD As Long = 1
Private Const SOCKET_ERROR As Long = -1

Private Type HOSTENT
   hName As Long
   hAliases As Long
   hAddrType As Integer
   hLen As Integer
   hAddrList As Long
End Type

Private 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


Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHost As String) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)


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 SocketsInitialize() As Boolean

       Dim WSAD As WSADATA
       Dim sLoByte As String
       Dim sHiByte As String



       If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then

          MsgBox "The 32-bit Windows Socket is not responding."

          SocketsInitialize = False

          Exit Function

       End If



       If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then

            MsgBox "This application requires a minimum of " & CStr(MIN_SOCKETS_REQD) & " supported sockets."
            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
          sHiByte = CStr(HiByte(WSAD.wVersion))
          sLoByte = CStr(LoByte(WSAD.wVersion))

          MsgBox "Sockets version " & sLoByte & "." & sHiByte & " is not supported by 32-bit Windows Sockets."
          SocketsInitialize = False

          Exit Function
       End If


       SocketsInitialize = True

End Function

Public Sub SocketsCleanup()

    If WSACleanup() <> ERROR_SUCCESS Then
        MsgBox "Socket error occurred in Cleanup."
    End If

End Sub


Public Function GetIPAddress() As String

    Dim sHostName As String * 256
    Dim lpHost As Long
    Dim HOST As HOSTENT
    Dim dwIPAddr As Long
    Dim tmpIPAddr() As Byte
    Dim i As Integer
    Dim sIPAddr As String



    If Not SocketsInitialize() Then
       GetIPAddress = ""
       Exit Function
    End If

    'GetHostName devuelve el nombre del local host en el buffer especificado por el
    'parámetro name. El nombre se devuelve en un string acabado en null. El formato
    'del nombre depende del driver de Windows Sockets - puede ser un simple nombre o
    'puede ser un nombre de dominio plenamente cualificado. De todas formas, está
    'garantizado que el nombre puede ser tratado por las funciones GetHostByName y
    'WSAAsyncGetHostByName.
    'En esta aplicación, si el nombre no ha sido configurado, GetHostName devolverá
    'un nombre que GetHostByName y WSAAsyncGetHostByName pueden resolver.

     If gethostname(sHostName, 256) = SOCKET_ERROR Then
        GetIPAddress = ""
        MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & " has occurred. Unable to successfully get Host Name."
        SocketsCleanup
        Exit Function
     End If

    'GetHostByName devuelve un puntero a la estructura HOSTENT - una estructura
    'creada por Windows Socktes. Dicha estructura contiene el resultado de una
    'búsqueda con éxito del host especificado en el parámetro name.
    'La aplicación nunca debe intentar modificar esta estructura ni ninguno de
    'sus componentes. Sólo hay una copia de la estructura por cada thread y la
    'aplicación puede copiar cualquier información que necesite antes de llamar
    'a otra función de Windows Sockets.
    'La función GetHostByName no puede resolver direcciones IP en formato string.
    'Usa la función Inet_Addr para convertir un string con una dirección IP y luego
    'emplea la función GetHostByAddr para obtener los contenidos de la estructura
    'HOSTENT.

     sHostName = Trim$(sHostName)

     lpHost = gethostbyname(sHostName)

     If lpHost = 0 Then
        GetIPAddress = ""
        MsgBox "Windows Sockets are not responding. " & "Unable to successfully get Host Name."
        SocketsCleanup
        Exit Function
     End If

    'para extraer la dirección IP devuelta, tenemos que hacer una copia de la estructura
    'HOST y de sus componentes

     CopyMemory HOST, lpHost, Len(HOST)

     CopyMemory dwIPAddr, HOST.hAddrList, 4

    'creamos un array para recoger el resultado

     ReDim tmpIPAddr(1 To HOST.hLen)

     CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen

    'y con el array, construimos la dirección añadiendo un punto entre los miembros

     For i = 1 To HOST.hLen

        sIPAddr = sIPAddr & tmpIPAddr(i) & "."

     Next

    'la rutina añade un punto al final del string, lo quitamos

     GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)

     SocketsCleanup


End Function

Private Sub Form_Load()
MsgBox GetIPAddress()
End Sub

'=========================================
' Nota : Este exemplo não necessita da ocx : Windows Sockets =
'=========================================

cumps.

Programadorvb6

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A melhor maneira que conheco para isso, é fazeres um script em PHP que faça echo ao IP que faz o request, e depois no VB fazer apenas um file download.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora