Bestimmung der Netzwerkklasse mittels IP-Adresse

Status
Nicht offen für weitere Antworten.
M

Martin13

Gast
Hi!

Ich muss für die Uni ein kleines Programm schreiben, mit dem man IP-Adressen und Subnetmask einlesen kann und dann die dazugeörige Netzwerk-ID bekommt.
Wir haben ein paar Code-Fragmente zur Verügung gestellt bekommen, unter anderem das hier:

Code:
if((ipAddress & 0xc0000000l) == 0x80000000l)
		{
			System.out.println("Klasse B Netzwerk");
		}

Wenn die IP-Adresse also in einem Klasse B-Netzwerk liegt, ist die Bedingung erfüllt. Und das verstehe ich nicht. Wie kommt man darauf?? Wie müsste das dann für ein Klasse A oder C Netz lauten??

Die IP-Adresse berechnet sich so:

Code:
long ipAddress = 0;
		long subnetMask;
		
		String sIP = new String("130.0.0.1");
		short temp;
		
		for(int i = 0; i < 4; i++)
		{
			if(i < 3)
				temp = Short.parseShort(sIP.substring(0, sIP.indexOf(".")));
			else
				temp = Short.parseShort(sIP);
			
			if(temp < 0 || temp > 255)
				throw new IllegalArgumentException();
			
			ipAddress = (ipAddress << 8) + temp;
			sIP = sIP.substring(sIP.indexOf(".") + 1);
		}

Had da irgendjemand eine Idee??
 
Zuletzt bearbeitet von einem Moderator:
M

Martin13

Gast
Hmm, aber was ich nicht verstehe, wieso wird die IP-Adresse mit 0xc0000000l verundet??
Müsste das Literal nicht 0x80000000l lauten???
 
M

Martin13

Gast
Okay ich habs jetzt selber herausgefunden:

0xc0000000l muss es lauten, weil die das Klasse-C-Netzwerk am Anfang zwei einser hat.

Man kann sowas basteln, um herauszufinden, in welcher Klasse ein Netz liegt:

Code:
if((ipAddress & 0xc0000000l) == 0x00000000l)
		{
			System.out.println("A");
		}
		if((ipAddress & 0xc0000000l) == 0x80000000l)
		{
			System.out.println("B");
		}
		if((ipAddress & 0xc0000000l) == 0xc0000000l)
		{
			System.out.println("C");
		}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben