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
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
Tuolla ip'n muuttamisella systeemin luvuksi päästäisi varmaankin vähemmällä koodilla jne... Ja sitä tässä haenkin.
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
Juuri tätä minä hain
Aihe on jo aika vanha, joten et voi enää vastata siihen.