Netzwerk in Java - IP-Adressen

Jede Maschine hat eine IP-Adresse einzigartig im Netzwerk. Es wird verwendet, um den Computer zu identifizieren, damit er Pakete empfangen kann, die über Router geroutet werden, die von anderen Computern gesendet werden.
Eine IP-Adresse vom Typ IPV4 on 32 Bit (4 Byte) hat die folgende Form: xxx.xxx.xxx.xxx, zum Beispiel: 192.168.0.3. Es besteht aus zwei Teilen: 
Ein rechter Teil zeigt das Netzwerk an, das Netzwerk-ID   : 192.168.0 und es ist statisch.
Der zweite Teil links zeigt die Maschine in diesem Netzwerk mit dem Namen  Host-ID   : 192.168.0.3.
Die Standard-IP-Adresse lautet 0.0.0.0/8. Es wird nur verwendet, um eine Verbindung zu DHCP-Server, Letzteres gibt die IP-Adresse an.

Es gibt drei Klassen von Adressierungen:
  1. die Klasse ANetzwerk-ID: xxx (126 Netzwerke) und das Host-ID: xxx.xxx.xxx (16777214 Computer).
  2. die Klasse BNetzwerk-ID : xxx.xxx (16384 Netzwerke )  et l'Host-ID: xxx.xxx (65534 Computer).
  3. die Klasse CNetzwerk-ID : xxx.xxx.xxx (2097152 Netzwerke )  et l'Host-ID: xxx (254 Computer).

Maske:

Das Interesse  der Maske ist zu erlauben  identifizieren  Das Netzwerk, das der IP-Adresse zugeordnet ist. Es besteht aus 4 Bytes wie eine IP-Adresse, zum Beispiel die Maske der IP-Adresse 192.168.0.1 ist 255.255.255.0 und wir schreiben 192.168.0.1/24. Anfängern empfehle ich diese Zusammenfassung auf Wikipedia zu lesen: IP-Adresse.

Überprüfen Sie, ob eine IP-Adresse korrekt ist

public class VerifierAddress {

static boolean isCorrect(String adr){
String[] parts = adr.split("\\.");
//Der Bereich einer Zahl liegt zwischen 0 und 255
for(int i = 0 ; i < 4; i++){
//In Ganzzahl konvertieren und
if(new Integer(parts[i])< 0 || new Integer(parts[i])> 255)
//retroune false
return false;
}
//gibt standardmäßig true zurück
return true;
}

public static void main(String[] args) {
String adr= "192.168.1.3";
System.out.println("adr+" ist "+isCorrect(adr));
}
}
Das Paket, mit dem wir IP-Adressen manipulieren können, ist java.net und stellt die Klasse InetAdress, das die Methoden enthält, mit denen wir arbeiten werden:

getLocalHost: gibt die lokale IP-Adresse des Computers zurück.
getByName(String nom_de_la_machine): Gibt die IP zurück, die mit dem als Parameter übergebenen Namen übereinstimmt.
getAllByName(String nom_de_la_machine): Gibt alle IP-Adressen zurück. die mit dem Namen übereinstimmen, der als Parameter übergeben wird.

Die Methoden, die auf dieses Objekt anwendbar sind, die von einer der beschriebenen Methoden zurückgegeben werden, sind:
getHostName: gibt den Namen der Maschine zurück.
getAddress: gibt die IP-Adresse als array zurück.
toString: dorthin zurückkehren  Kanal  mit dem Namen und der Adresse.

Das folgende Programm berechnet das Präfix, die Adresse, die Netzmaske, den Cisco-Platzhalter, die Netzwerkadresse und die Broadcast-Adresse.

import java.math.BigInteger; 
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

/*************************************
* @author www.codeurjava.com
* Alle Rechte vorbehalten
*/

public class Adressierung {

public static void main(String[] zero) wirft SocketException {

String address = "192.168.1.199/10";
String[] parts = address.split("/");
Zeichenkette ip = Teile[0];
int-Präfix;
if (parts.length < 2) {
prefix = 0;
} else {
prefix = Integer.parseInt(parts[1]);
}
System.out.println("Adresse =\t" + ip+"\nPräfix =\t" + Präfix);

//Konvertieren der gesamten Maske in ein 32-Bit-Array
int mask = 0xffffffff < < (32 - Präfix);
int Wert = Maske;
byte[] bytes_masque = new byte[]{
(byte)(Wert > > > 24), (Byte)(Wert > > 16 & 0xff), (Byte)(Wert > > 8 & 0xff), (Byte)(Wert & 0xff) };

try {
//masque
InetAddress netAddr = InetAddress.getByAddress(bytes_masque);
System.out.println("Mask =\t" + netAddr.getHostAddress());

/*************************
* Netzwerkadresse
*/
//IP-Adresse in long
long ipl = ipToLong(ip);

//IP in ein 32bits
byte[] Array konvertieren bytes_ip = new byte[]{
(byte) ((ipl > > 24) & 0xFF),
(Byte) ((IPL-> > 16) & 0xFF),
(Byte) ((IPL-> > 8 ) & 0xFF),
(Byte) (IPL & 0xFF)};

//Die logische ET zwischen der IP-Adresse und der Maske
byte[] bytes_reseau = new byte[]{
(byte) (bytes_ip[0] & bytes_masque[0]),
(byte) (bytes_ip[1] & bytes_masque[1]),
(byte) (bytes_ip[2] & bytes_masque[2]),
(Byte) (bytes_ip[3] & bytes_masque[3]),
};
//erhaltene Netzwerkadresse
InetAddress adr_reseau = InetAddress.getByAddress(bytes_reseau);
System.out.println("Netzwerkadresse =\t"+adr_reseau.getHostAddress());

/********************************
*Broadcast-Adresse
*/
//Netzwerkadresse - invertierte Maske ~val & 0xff
//invert mask
bytes_masque = new byte[]{
(byte) (~bytes_masque[0] & 0xff),
(byte) (~bytes_masque[1] & 0xff),
(byte) (~bytes_masque[2] & 0xff),
(byte) (~bytes_masque[3] & 0xff),
};
System.out.println("Platzhaltermaske) =\t"+InetAddress.getByAddress(bytes_masque).getHostAddress());

byte[] bytes_broadcast = new byte[]{
(byte) (bytes_reseau[0] | bytes_masque[0]),
(byte) (bytes_reseau[1] | bytes_masque[1]),
(byte) (bytes_reseau[2] | bytes_masque[2]),
(byte) (bytes_reseau[3] | bytes_masque[3]),
};
//Broadcast-Adresse erhalten
InetAddress adrbroadcast = InetAddress.getByAddress(bytes_broadcast);
System.out.println("Broadcast-Adresse =\t"+adrbroadcast.getHostAddress());

} catch (UnknownHostException e) {
e.printStackTrace();
}
}

public static long ipToLong(String ipAddress) {
long result = 0;
String[] ipAddressInArray = ipAddress.split("\\.");

for (int i = 3; i >= 0; i--) {
long ip = Long.parseLong(ipAddressInArray[3 - i]);
Ergebnis |= IP < < (i*8);
}
Ergebnis zurückgeben;
}
}
Laufzeit:
Adresse= 35.204.121.13
Präfix= 10
Mask= 255.192.0.0
Wildcard= 0.63.255.255
Network Address= 35.192.0.0
Broadcast Address = 35.255.255.255

Kennen Sie die IP-Adresse des Servers im Web

Es ist auch möglich, die lokale Adresse des Computers und des Servers über eine Webadresse herauszufinden.

import java.net.InetAddress; 
import java.net.SocketException;
import java.net.UnknownHostException;

public class ServerAddress {

public static void main(String[] zero) throws SocketException {

String LocaleAddress;
InetAddress ServerAddress;

try{
//Local Address
LocaleAdresse = (Zeichenfolge) InetAddress.getLocalHost().getHostAddress();
System.out.println("Die lokale Adresse = "+LocaleAddress);

//Serveradresse google
ServerAddress= InetAddress.getByName("www.google.net");
System.out.println("Google-Serveradresse = "+Serveradresse);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
Laufzeit:
Lokale Adresse = 192.168.1.2
Google-Serveradresse = www.google.net/41.201.128.40