Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ANALYSE IP


Information sur la source

Description

analyse une adresse ip.
donne le classe de l'adresse ip, ainsi que divers renseignement.
et il traduit aussi l'adresse ip en binaire.
 

Source

  • Public Function CBin(ip_dec) As String
  • ' initiatlisation des variables
  • Ip_Bin_001 = 0
  • IP_Bin_002 = 0
  • IP_Bin_003 = 0
  • IP_Bin_004 = 0
  • Ip_Bin_005 = 0
  • Ip_Bin_006 = 0
  • Ip_Bin_007 = 0
  • Ip_Bin_008 = 0
  • Reste = ip_dec
  • ' pour le premier bit
  • If (ip_dec >= 128) Then
  • Ip_Bin_001 = 1
  • Reste = ip_dec - 128
  • Else
  • Ip_Bin_001 = 0
  • End If
  • ' pour la 2ème
  • 'MsgBox "Reste=" & Reste
  • If (Reste >= 64) Then
  • IP_Bin_002 = 1
  • Reste = Reste - 64
  • Else
  • IP_Bin_002 = 0
  • End If
  • ' pour la 3ème
  • If (Reste >= 32) Then
  • IP_Bin_003 = 1
  • Reste = Reste - 32
  • Else
  • IP_Bin_003 = 0
  • End If
  • ' pour la 4ème
  • If (Reste >= 16) Then
  • IP_Bin_004 = 1
  • Reste = Reste - 16
  • Else
  • IP_Bin_004 = 0
  • End If
  • ' pour le 5ème
  • If (Reste >= 8) Then
  • Ip_Bin_005 = 1
  • Reste = Reste - 8
  • Else
  • Ip_Bin_005 = 0
  • End If
  • ' pour le 6ème
  • If (Reste >= 4) Then
  • Ip_Bin_006 = 1
  • Reste = Reste - 4
  • Else
  • Ip_Bin_006 = 0
  • End If
  • ' pour la 7ème
  • If (Reste >= 2) Then
  • Ip_Bin_007 = 1
  • Reste = Reste - 2
  • Else
  • Ip_Bin_007 = 0
  • End If
  • ' pour la 8ème et dernière
  • If (Reste >= 1) Then
  • Ip_Bin_008 = 1
  • Reste = Reste - 1
  • Else
  • Ip_Bin_008 = 0
  • End If
  • ' on concatène
  • CBin = Ip_Bin_001 & IP_Bin_002 & IP_Bin_003 & IP_Bin_004 & Ip_Bin_005 & Ip_Bin_006 & Ip_Bin_007 & Ip_Bin_008
  • End Function
  • Private Sub Btn_MSR_Click()
  • Select Case CInt(IP_Dec_01)
  • Case 1 To 126
  • MSR_Dec_01 = 255
  • MSR_Dec_02 = 0
  • MSR_Dec_03 = 0
  • MSR_Dec_04 = 0
  • Case 128 To 191
  • MSR_Dec_01 = 255
  • MSR_Dec_02 = 255
  • MSR_Dec_03 = 0
  • MSR_Dec_04 = 0
  • Case 192 To 223
  • MSR_Dec_01 = 255
  • MSR_Dec_02 = 255
  • MSR_Dec_03 = 255
  • MSR_Dec_04 = 0
  • End Select
  • End Sub
  • Public Function IsPrivate(IP_Dec_01, IP_Dec_02) As Boolean
  • Dim prive(10)
  • ' prive(1) = "10."
  • ' prive(2) = "172.16."
  • ' prive(3) = "192.168."
  • ' adr = "11.0.0.1"
  • ' function qui va dire si l'adresse ip passé en paramètres est une adresse privée ou non
  • 'MsgBox ("prive=" & prive(1) & " | ip_dec =" & ip_dec)
  • ' strcomp --> -1 si adrese privée
  • ' isegal = StrComp(adr, prive(1), 1)
  • ' MsgBox ("isegal=" & isegal)
  • 'par défaut, on met isprivate à faux
  • IsPrivate = False
  • Select Case CInt(IP_Dec_01)
  • Case 10
  • IsPrivate = True
  • Case 172
  • If CInt(IP_Dec_02) = 16 Then
  • IsPrivate = True
  • End If
  • Case 192
  • If CInt(IP_Dec_02) = 168 Then
  • IsPrivate = True
  • End If
  • End Select
  • ' IsPrivate = isegal
  • End Function
  • 'Public Function Nature(segment As Integer) As String
  • ' Select Case segment
  • ' Case 0
  • ' Nature = "d'un réseau"
  • ' Case 1 To 254
  • ' Nature = "d'une carte réseau"
  • ' Case 255
  • ' Nature = "de Broadcast"
  • ' End Select
  • 'End Function
  • Private Sub Exe_Click()
  • Dim classe
  • Dim ip_dec
  • ip_dec = IP_Dec_01 & "." & IP_Dec_02 & "." & IP_Dec_03 & "." & IP_Dec_04
  • ' Conversion de l'adresse Ip en binaire
  • IP_Bin_01 = CBin(IP_Dec_01)
  • IP_Bin_02 = CBin(IP_Dec_02)
  • IP_Bin_03 = CBin(IP_Dec_03)
  • IP_Bin_04 = CBin(IP_Dec_04)
  • ' Conversion du masque de sous réseau en binaire
  • MSR_Bin_01 = CBin(MSR_Dec_01)
  • MSR_Bin_02 = CBin(MSR_Dec_02)
  • MSR_Bin_03 = CBin(MSR_Dec_03)
  • MSR_Bin_04 = CBin(MSR_Dec_04)
  • ' pour les informations :
  • ' pour la classe:
  • ipn = CInt(IP_Dec_01)
  • Select Case ipn
  • Case 1 To 126
  • classe = "A"
  • cl_deb = "1.0.0.1"
  • cl_fin = "126.0.0.254"
  • nb_ordi_possible = 16777214
  • Case 128 To 191
  • classe = "B"
  • cl_deb = "128.0.0.1"
  • cl_fin = "191.0.0.254"
  • nb_ordi_possible = 65534
  • Case 192 To 223
  • classe = "C"
  • cl_deb = "192.0.0.1"
  • cl_fin = "223.0.0.254"
  • nb_ordi_possible = 254
  • End Select
  • ' Tableau contenant les adresses privés
  • Dim TabAdPri()
  • info = ""
  • ' info = "Cette adresse est l'adresse " & Nature(IP_Dec_04) & "." & Chr(13)
  • info = info & "Cette adresse IP est de classe " & classe & "." & Chr(13)
  • info = info & FormatNumber(nb_ordi_possible, 0, 0, vbFalse) & " adresses maximum dans cette classe, "
  • info = info & "dont les adresses vont de " & cl_deb & " à " & cl_fin & "." & Chr(13)
  • privo = IsPrivate(IP_Dec_01, IP_Dec_02)
  • If privo = True Then
  • info = info & " C'est une adresse privée." & Chr(13)
  • Else
  • info = info & "C'est une adresse publique du réseau internet." & Chr(13)
  • End If
  • End Sub
  • Public Function ClasseDe(ip_dec) As Integer
  • Select Case ip_dec
  • Case 1 To 126
  • ClasseDe = "A"
  • Case 128 To 191
  • ClasseDe = "B"
  • Case 192 To 223
  • ClasseDe = "C"
  • End Select
  • End Function
Public Function CBin(ip_dec) As String
    ' initiatlisation des variables
    Ip_Bin_001 = 0
    IP_Bin_002 = 0
    IP_Bin_003 = 0
    IP_Bin_004 = 0
    Ip_Bin_005 = 0
    Ip_Bin_006 = 0
    Ip_Bin_007 = 0
    Ip_Bin_008 = 0
    Reste = ip_dec

    ' pour le premier bit
    If (ip_dec >= 128) Then
        Ip_Bin_001 = 1
        Reste = ip_dec - 128
    Else
        Ip_Bin_001 = 0
    End If

    ' pour la 2ème
    'MsgBox "Reste=" & Reste
    If (Reste >= 64) Then
        IP_Bin_002 = 1
        Reste = Reste - 64
    Else
        IP_Bin_002 = 0
    End If
        
    ' pour la 3ème
    If (Reste >= 32) Then
        IP_Bin_003 = 1
        Reste = Reste - 32
    Else
        IP_Bin_003 = 0
    End If
    
    ' pour la 4ème
    If (Reste >= 16) Then
        IP_Bin_004 = 1
        Reste = Reste - 16
    Else
        IP_Bin_004 = 0
    End If
    
    ' pour le 5ème
    If (Reste >= 8) Then
        Ip_Bin_005 = 1
        Reste = Reste - 8
    Else
        Ip_Bin_005 = 0
    End If
    
    ' pour le 6ème
    If (Reste >= 4) Then
        Ip_Bin_006 = 1
        Reste = Reste - 4
    Else
        Ip_Bin_006 = 0
    End If
    
    ' pour la 7ème
    If (Reste >= 2) Then
        Ip_Bin_007 = 1
        Reste = Reste - 2
    Else
        Ip_Bin_007 = 0
    End If
        
    ' pour la 8ème et dernière
    If (Reste >= 1) Then
        Ip_Bin_008 = 1
        Reste = Reste - 1
    Else
        Ip_Bin_008 = 0
    End If

    ' on concatène
    CBin = Ip_Bin_001 & IP_Bin_002 & IP_Bin_003 & IP_Bin_004 & Ip_Bin_005 & Ip_Bin_006 & Ip_Bin_007 & Ip_Bin_008
 
End Function
Private Sub Btn_MSR_Click()
    Select Case CInt(IP_Dec_01)
        Case 1 To 126
            MSR_Dec_01 = 255
            MSR_Dec_02 = 0
            MSR_Dec_03 = 0
            MSR_Dec_04 = 0
        Case 128 To 191
            MSR_Dec_01 = 255
            MSR_Dec_02 = 255
            MSR_Dec_03 = 0
            MSR_Dec_04 = 0
        Case 192 To 223
            MSR_Dec_01 = 255
            MSR_Dec_02 = 255
            MSR_Dec_03 = 255
            MSR_Dec_04 = 0
     End Select
End Sub
Public Function IsPrivate(IP_Dec_01, IP_Dec_02) As Boolean
    Dim prive(10)
   ' prive(1) = "10."
   ' prive(2) = "172.16."
   ' prive(3) = "192.168."
   ' adr = "11.0.0.1"
   ' function qui va dire si l'adresse ip passé en paramètres est une adresse privée ou non
   
   'MsgBox ("prive=" & prive(1) & " | ip_dec =" & ip_dec)
   ' strcomp --> -1 si adrese privée
   
   
   ' isegal = StrComp(adr, prive(1), 1)
   ' MsgBox ("isegal=" & isegal)
   'par défaut, on met isprivate à faux
   IsPrivate = False
   Select Case CInt(IP_Dec_01)
        Case 10
            IsPrivate = True
        Case 172
            If CInt(IP_Dec_02) = 16 Then
                IsPrivate = True
            End If
        Case 192
            If CInt(IP_Dec_02) = 168 Then
                IsPrivate = True
            End If
    End Select
   
  '  IsPrivate = isegal
    
End Function

'Public Function Nature(segment As Integer) As String
'    Select Case segment
'    Case 0
'        Nature = "d'un réseau"
'    Case 1 To 254
'        Nature = "d'une carte réseau"
'    Case 255
'        Nature = "de Broadcast"
'    End Select
'End Function
Private Sub Exe_Click()
    Dim classe
    Dim ip_dec
    ip_dec = IP_Dec_01 & "." & IP_Dec_02 & "." & IP_Dec_03 & "." & IP_Dec_04
    ' Conversion de l'adresse Ip en binaire
    IP_Bin_01 = CBin(IP_Dec_01)
    IP_Bin_02 = CBin(IP_Dec_02)
    IP_Bin_03 = CBin(IP_Dec_03)
    IP_Bin_04 = CBin(IP_Dec_04)
    
    ' Conversion du masque de sous réseau en binaire
    MSR_Bin_01 = CBin(MSR_Dec_01)
    MSR_Bin_02 = CBin(MSR_Dec_02)
    MSR_Bin_03 = CBin(MSR_Dec_03)
    MSR_Bin_04 = CBin(MSR_Dec_04)
    
    ' pour les informations :
    ' pour la classe:
    ipn = CInt(IP_Dec_01)
    Select Case ipn
        Case 1 To 126
            classe = "A"
            cl_deb = "1.0.0.1"
            cl_fin = "126.0.0.254"
            nb_ordi_possible = 16777214
        Case 128 To 191
            classe = "B"
            cl_deb = "128.0.0.1"
            cl_fin = "191.0.0.254"
            nb_ordi_possible = 65534
         Case 192 To 223
            classe = "C"
            cl_deb = "192.0.0.1"
            cl_fin = "223.0.0.254"
            nb_ordi_possible = 254
      End Select
      
    ' Tableau contenant les adresses privés
    Dim TabAdPri()
    info = ""
   ' info = "Cette adresse est l'adresse " & Nature(IP_Dec_04) & "." & Chr(13)
    info = info & "Cette adresse IP est de classe " & classe & "." & Chr(13)
    info = info & FormatNumber(nb_ordi_possible, 0, 0, vbFalse) & " adresses maximum dans cette classe, "
    info = info & "dont les adresses vont de " & cl_deb & " à " & cl_fin & "." & Chr(13)
    privo = IsPrivate(IP_Dec_01, IP_Dec_02)
    If privo = True Then
        info = info & " C'est une adresse privée." & Chr(13)
    Else
        info = info & "C'est une adresse publique du réseau internet." & Chr(13)
    End If
End Sub
Public Function ClasseDe(ip_dec) As Integer
    Select Case ip_dec
        Case 1 To 126
            ClasseDe = "A"
        Case 128 To 191
            ClasseDe = "B"
        Case 192 To 223
            ClasseDe = "C"
    End Select
End Function

Commentaires et avis

signaler à un administrateur
Commentaire de ghuysmans99 le 08/07/2008 19:48:55

Ta conversion binaire est lamentable !!
Voilà une fonction correcte :

Private Function DecToBase(Number As Integer, Base As Byte) As String
Dim Rest As Integer, Result As String
Const Charset As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
If Base > 36 Then Exit Function
Do
  Rest = Number Mod Base
  Number = Number \ Base
  Result = Mid(Charset, Rest + 1, 1) & Result
Loop While Number > 0
DecToBase = Result
End Function

Public Function CBin(N as Long) As String
CBin = BaseConv(N,2)
End Function

signaler à un administrateur
Commentaire de ghuysmans99 le 08/07/2008 19:50:58

Explication :
1) Tu n'utilises pas de boucle.
2) Tes variables sont en variant.
3) Le paramètre est en variant.

Ma fonction (DecToBase), conversion de décimal à la base que tu veux, gère les bases de 2 à 36.

signaler à un administrateur
Commentaire de ghuysmans99 le 08/07/2008 19:51:46

Oups je me suis gourré. Ce n'est pas :

#Public Function CBin(N as Long) As String
#CBin = BaseConv(N,2)
#End Function

Mais :

Public Function CBin(N as Long) As String
CBin = DecToBase(N,2)
End Function

signaler à un administrateur
Commentaire de EBArtSoft le 08/07/2008 23:05:58 administrateur CS

euh... le principe de l'ipv4 c'est d'utiliser des masque de bit pour traiter plus vite les informations et donc calculer des adresses. Hors si tu convertis tout en string tu ne profite pas de cet aspet.

Transformes tes ip en binaire et tu veras de quoi je parle :p

@+

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

réseau local [ par Dragon ] une question bien stupid, c`est quoi notre IP lorsqu`on est connecter à un réseau local ???ça dois surement avoir un rapport avec le proxy, masi il y Recherche d'adresses IP sur une réseau local [ par tntdavid ] Dans notre société GROUPAMA Centre-Atlantique, nous voudrions développer sous VB, une petite application permettant de connaitre les adresses IP de to Adresse IP quand on a plusieurs cartes réseau et des IPC différentes sur la même machine [ par jack ] Bonjour à tou(te)sComment retrouver l'adresse IP quand on a plusieurs cartes réseau et des IP différentes sur la même machine ?Le WinSocks en donne un Broadcasting : Comment ça marche ? [ par jack ] Salut.(réseau privé)J'ai une machine sur laquelle tourne un prog "Serveur" de doc. L'adresse IP de ce serveur est inconnue des prog Clients présents s IP dans réseau [ par leptidev ] Bonjour, je voudrais avoir toutes les adresses ip d'un réseau. merci Ouvrir fichier distant (sur un machine en réseau Intranet) [ par jockos ] Je connais l'IP de la "machine cible" et le Path du fichier que je veux ouvrir sur cette machine cible.Comment faire pour ouvrir ce fichier ?Est-ce qu Lister les PC d'un réseau [ par krakoukass ] Bonjour à tousJe voudrais pouvoir lister simplement l'ensemble des PC connectés sur un réseau, soit par leur adresse IP, soit par leur nom.Le but étan Adresse IP d'une machine sur un réseau [ par kpfeu ] Bonjour,j'ai vu sur ce site des codes permettant de récupérer l'adresse ip de la machine ou est éxécuté le prog et ce avec une fonction qui permet de Adresse IP avec Winsock?? [ par thguillon ] Bonjour,Je suis en train de faire un chat, et j'ai un petit problème.J'aimerai récupérer toutes les adresses IP de mon poste en VB.En fait, quand je s Adresse IP sur un réseau [ par recmi ] J'aimerai détecter toutes les adresses IP connectées au réseau locale , comment puis-je faire?Je suis un débutant. Avez -vous un exemple de codeMerci


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,608 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.