[Java] Programmation réseau de programmation par socket

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 ()); 
    } 
}

 

Je suppose que tu aimes

Origine www.cnblogs.com/mindzone/p/12755692.html
conseillé
Classement