Java fournit des bibliothèques de classes liées au réseau, une mise en réseau indolore et les détails sous-jacents sont transmis au contrôle JVM
Java implémente une bibliothèque réseau multiplateforme, notre développement est confronté à un environnement de programmation réseau unifié
Objectif:
Communiquer directement ou indirectement et communiquer avec d'autres données informatiques via des protocoles réseau
Le principal problème:
Localiser avec précision un ordinateur ou plusieurs ordinateurs sur le réseau et localiser des applications spécifiques sur l'hôte
Comment transférer des données de manière fiable et efficace après avoir trouvé l'hôte
Éléments de communication:
IP et numéro de port
Protocole TCP / IP
IP: est l'identifiant unique de l'ordinateur dans le réseau
Adresse de bouclage locale; nom d'hôte 127.0.0.1: LocalHost
Classification des adresses IP : IPV4 IPV6
v4-4 octets, 4 0-255 environ 4,2 milliards au total disponibles, 3 milliards en Amérique du Nord, 400 millions en Asie, épuisés en 2011,
v6-128 bits 16 octets 8 entiers non signés, chaque entier est représenté par 4 chiffres hexadécimaux et chaque nombre est séparé par deux points
Classification par adresse : adresse publique [utilisation du World Wide Web] et adresse privée [utilisation du LAN]
192.168.0.0-192.168.255.255 est utilisé en interne par l'organisation
static void socket01IP_Address () lève UnknownHostException { // DNS Domain Name System // localhost / 127.0.0.1 地址 机 地址 InetAddress localhost = InetAddress.getByName ("localhost" ); System.out.println (localhost); InetAddress a = InetAddress.getByName ("www.cnblogs.com" ); System.out.println (a); // www.baidu.com/14.215.177.38 // www.acfun.cn/117.21.225.193 // www.bilibili.com/119.3.70.188 // www.cnblogs.com/101.37.113.127 InetAddress localHost =InetAddress.getLocalHost (); System.out.println (localHost); Adresse de chaîne = localHost.getHostAddress (); String hostName = localHost.getHostName (); }
Le numéro de port est le processus (programme) en cours d'exécution sur l'ordinateur
Différents processus ont des numéros de port différents
Défini comme un entier 16 bits 0-65535
Ports connus 0-1023 Les communications de service prédéfinies occupent HTTP 80, FTP 21, Telnet 23
Les ports d'enregistrement 1024 à 49151 sont alloués aux processus ou applications utilisateur Tomcat8080, MySQL3306, Oracle1521
Port dynamique / port privé 49152-65535
Socket = numéro de port + adresse IP
TCP
-Etablir une connexion et former un canal de transmission,
- Confirmation de prise de contact à trois voies, communication point à point, fiable
- Client et serveur de processus d'application TCP
-Peut transférer de grandes données
-La transmission est terminée, la connexion établie est libérée et l'efficacité est faible
UDP
-Emballage de données, pas de connexion
-Taille limite de 64 Ko par paquet
-Aucune réponse n'est confirmée, que l'autre partie soit préparée et que la partie destinataire la reçoive
-Transmission à large bande
-A la fin de l'envoi, les ressources sont libérées dans le désordre, les frais généraux sont faibles et la vitesse est rapide
TCP
classe publique TCP_Test { @Test // Server public void server () lève une exception { // Create server program ServerSocket server = new ServerSocket (65000 ); Socket client = server.accept (); // Indique que la suite de clients entrants Connection InputStream inputStream = client.getInputStream (); byte [] bytesBuffer = new byte [512 ]; int len; while ((len = inputStream.read (bytesBuffer))! = -1 ) { String str= nouvelle chaîne (bytesBuffer, 0 , len); System.out.println (str); } System.out.println ( "Message du serveur: le client a été reçu:" + client.getInetAddress (). getHostAddress () + "Message" ); // Ferme la ressource inputStream.close (); client.close (); server.close (); } @Test // Client public void client () lève une exception { // Ceci permet de se connecter Informations sur le socket de l'autre partie, IP + port Socket client = nouveau Socket (InetAddress.getByName ("localhost"), 65000 ); OutputStream outputStream= client.getOutputStream (); outputStream.write ( "Message envoyé par le client: connexion réussie !!!" .getBytes ()); // Stream objet release outputStream.close (); // Socket release client. close (); } }
UDP
classe publique UDP_Test { @Test public void send () lève une exception { DatagramSocket ds = new DatagramSocket (); java.lang.String message = "来自 发送 器 的 消息 : Bonjour UDP !!!" ; byte [] bytes = message.getBytes (); InetAddress localHost = InetAddress.getLocalHost (); DatagramPacket dp = nouveau DatagramPacket (octets, 0, octets.length, localHost, 65000 ); // 发送 包 ds.send (dp); ds.close (); } @Test public void receive () lève une exception { DatagramSocket ds = new DatagramSocket (65000 ); octet [] tampon = nouvel octet [1024 ]; Paquet DatagramPacket = nouveau DatagramPacket (buffer, 0 , buffer.length); ds.receive (paquet); System.out.println ( new String (packet.getData (), 0 , packet.getLength ())); ds.close (); } }
URL
Uniform Resource Locator Uniform Resource Locator, qui représente une adresse de ressource du réseau
-Est-ce un URI spécifique, l'URL peut être utilisée pour identifier une ressource, indiquant comment localiser cette ressource
-Protocole de transfert nom d'hôte numéro de port nom de fichier nom de fragment? Liste des paramètres
Le numéro de port général est 80
#Clip name est le point d'ancrage, pour localiser une pièce spécifique
La liste des paramètres est une paire KV? K1 = v1 comme ceci, s'il y a plusieurs paramètres, utilisez et connectez
public class URL_Test { public static void main (String [] args) lève une exception { String url = "https://www.ygo-sem.cn/photo/story-430.aspx" ; URL url_link = new URL (url) ; System.out.println ( "nom du protocole:" + url_link.getProtocol ()); System.out.println ( "nom d'hôte:" + url_link.getHost ()); System.out.println ( "numéro de port:" + url_link.getPort ()); // -1 signifie System.out.println ("chemin du fichier:" + url_link.getPath ()); System.out.println ( "Nom du fichier:" +url_link.getFile ()); System.out.println ( "查询 名 :" + url_link.getQuery ()); } }