webForumDet fria alternativet

Kolla programmatiskt om ett ip tillhör en viss nätmask

.NET

2 svar · 540 visningar · startad av nachip

Medlem sedan aug. 200150 inlägg
Frågan#1

Hej,

Osäker på om den här frågan hör hemma här men någon moderator får väl flytta den till lämpligt ställe annars. :-)

Hur som helst så skulle jag behöva hjälp med att kolla om ett ip tillhör en viss nätmask. T ex om 192.168.1.26 tillhör 192.168.1.0/24. Hur gör man detta programmatiskt?

Medlem sedan dec. 2004736 inlägg
#2

Inte riktigt säker på hur du menar... Menar du rent klass-mässigt? (A: /8 B: /16 C: /24)
För 192.168.1.26 kan ju tillhöra 192.168.1.0/25 26 27 28 och så vidare.

Medlem sedan juni 20008 205 inlägg
#3

Om du har båda adresserna som byte-arrayer kan du göra såhär:

byte[] mask = { 192, 168, 1, 0 }; // IP-masken
int nbits = 24; // Antalet bitar från masken att använda
byte[] ip = { 192, 168, 1, 26 }; // IP-adressen
bool match = true;
for (int i = 0; match && i < nbits / 8; ++i) match = (mask[i] & ip[i]) == ip[i];
if (match) Console.WriteLine("IP:t matchade");
274 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
139 ms — ändringar (db)