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 IfLaajemman 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 IfTuolla 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.