Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Ip range

tesmu [25.03.2006 01:26:16]

#

Joops elikkä tässä olen tekemässä portin tunnelointiohjelmaa. Ongelmaksi tuli blocked ip list, jossa voi lisätä esim ip rangen. Noh mietin että miten voisin verrata annettua ip osoitetta, että onko se rangen sisällä. Tulin siihen tulokseen että parhain vertailutapa olisi ehkä muuttaa se systeemin luvuksi eli... 0.0.0.0 = 0 0.0.0.1 = 1 0.0.0.2 = 3 jne. Mutta miten muutan helpoiten ip osotteen systeemin luvuksi?
Kieli on siis VB6

BadSource [27.03.2006 09:52:21]

#

Itse tekisin tuon vertailun jakamalla IP:t splitillä osiin, jolloin verkkoalueiden vertailu on helpompaa.

Dim BlockedIP As String
Dim SplittedBIP() As String
Dim NewIP As String
Dim SplittedNIP() As String
Dim i As Integer
Dim Match As Boolean

BlockedIP = "127.0.0.1"
SplittedBIP = Split(BlockedIP, ".") 'pilkotaan taulukkoon pisteiden kohdalta
NewIP = "127.0.0.1"
SplittedNIP = Split(NewIP, ".")
Match = True
For i = 0 To 3
    If SplittedBIP(i) <> SplittedNIP(i) Then
        Match = False 'IP:t poikkeavat toisistaan
        Exit For
    End If
Next i
If Match = True Then
    MsgBox "Kotiin siitä, tänne sulla ei oo asiaa!"
End If

Laajemman alueen voisi erottaa esimerkiksi viivalla toisistaan.

Dim BlockedIP As String
Dim Range() As String
Dim Mista() As String
Dim Minne() As String
Dim SplittedNIP() As String
Dim i As Integer
Dim Match As Boolean

BlockedIP = "123.123.123.120-123.123.123.130"
'Tarkistetaan onko rajattu suurempi alue
If InStr(1, BlockedIP, "-") > 0 Then
    Range = Split(BlockedIP, "-") 'jaetaan viivan kohdalta osiin
    Mista = Split(Range(0), ".") 'indeksi 0:sta eka osa
    Minne = Split(Range(1), ".") 'indeksi 1:stä toka osa
    SplittedNIP = Split("123.123.123.123", ".")
    Match = True
    For i = 0 To 3
        If SplittedNIP(i) < Mista(i) Or SplittedNIP(i) > Minne(i) Then
            Match = False 'IP ei löydy rajojen sisältä
            Exit For
        End If
    Next i
    If Match = True Then
        MsgBox "Trolli takaisin sillan alle!"
    End If
Else
    'Suora vertailu edellisen esimerkin mukaan
End If

tesmu [29.03.2006 20:20:56]

#

Tuolla ip'n muuttamisella systeemin luvuksi päästäisi varmaankin vähemmällä koodilla jne... Ja sitä tässä haenkin.

renni [29.03.2006 20:21:24]

#

Kannattaisi varmaan muuntaa ne IP:t oikeaksi luvuksi. Tuossahan on suoraan neljä tavua lueteltuna.
Esim: 1.2.3.4 = 256*256*256* 1 + 256*256* 2 + 256* 3 + 4

tesmu [29.03.2006 23:50:02]

#

Juuri tätä minä hain

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta