Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1379
  • Last Modified:

How do I determine if IP is in IP Range?

I want to check to see if an IP is in  a supplied range of IP's. For example, is the IP 192.168.1.50 in the range of 192.168.1.25 - 192.168.1.68. How could i do that with VB.net?

Thanks
0
ronayers
Asked:
ronayers
  • 2
  • 2
1 Solution
 
Stephen MandersonSoftware EngineerCommented:
Hi There here is one way of doing it..
                   ' Start                   'Finish               'Check For
IsBetween("192.168.1.25 ", "192.168.1.68", "192.168.1.78") Returns False
IsBetween("192.168.1.25 ", "192.168.1.68", "192.168.1.50") Returns True

Regards
Steve

    Public Function IsBetween(ByVal Start As String, ByVal Finish As String, ByVal CheckFor As String) As Boolean
 
        Dim StartRange As Long = CLng(Start.Replace(".", ""))
        Dim FinishRange As Long = CLng(Finish.Replace(".", ""))
        Dim CheckForIP As Long = CLng(CheckFor.Replace(".", ""))
 
        If StartRange >= CheckForIP Or CheckForIP <= FinishRange Then
            Return True
        Else
            Return False
        End If
 
    End Function

Open in new window

0
 
Stephen MandersonSoftware EngineerCommented:
Need to change the 'Or' in line 7 to 'And'
0
 
troyw1Commented:
The posted code will not work properly because 192.168.12.6 would be consider in-range when it is not. Try this code instead:

http://www.freevbcode.com/ShowCode.asp?ID=7288
0
 
ronayersAuthor Commented:
troyw1:

that will just tell me the subnet the IPs are own based off a range. That will not solve my problem. Any other ideas?

thanks
0
 
troyw1Commented:
I tried to find the example code I have used before, but I can't find it and I no longer access to the customer code that I wrote. It was a function that converted IP addresses to their correct integer value.

Here is another interesting approach that should work also; comparing each octet range, one at a time.
'Set the values to test
RangeMin = "192.168.10.1"
RangeMax = "192.168.10.50"
TestIP = "192.168.10.55"
 
 
'Split the above values into arrays
MinAry = Split(RangeMin, ".", -1, 1)
MaxAry = Split(RangeMax, ".", -1, 1)
IPAry = Split(TestIP, ".", -1, 1)
 
 
'Test the octets
error = ""
If IPAry(0) < MinAry(0) OR IPAry(0) > MaxAry(0) Then
error = "First octect out of range"
ElseIF IPAry(1) < MinAry(1) OR IPAry(1) > MaxAry(1) Then
error = "Second octect out of range"
ElseIF IPAry(2) < MinAry(2) OR IPAry(2) > MaxAry(2) Then
error = "Third octect out of range"
ElseIF IPAry(3) < MinAry(3) OR IPAry(3) > MaxAry(3) Then
error = "Fourth octect out of range"
End If
 
'Display the results
If error<>"" Then
MsgBox error, 16, "Processing Complete"
Else
MsgBox "The IP is within range", 1, "Processing Complete"
End If

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now