Médiaforma

All posts tagged tcp

Les éléments accessibles sur Internet ou sur l’Intranet d’une entreprise sont représentés par leur URL (Uniform Resource Locator). La syntaxe utilisée dans l’URL est fonction du protocole utilisé :

Protocole URL
http http://serveur:port/chemin?param1&param2&param3
ftp ftp://utilisateur:motDePasse@serveur:port/chemin
mail mailto:email
fichier local file://serveur/chemin

 

Pour accéder à un élément par son URL en Java, vous utiliserez les classes URL et URLConnection. Voici quelques-unes des méthodes utilisables :

Classe Méthode Objet de cette méthode
URL getProtocol() Partie protocole de l’URL
URL getHost() Partie hôte de l’URL
URL getPort() Port utilisé dans l’URL
URL getFile() chemin complet de l’URL
URL getUserInfo() Nom de l’utilisateur de l’URL, ou null si inexistant
URLConnection openConnection() Ouverture d’une connexion vers une URL
URLConnection openStream() Ouverture d’un flux de données en entrée
URLConnection getContentLength() Longueur du flux de données

La classe InetAddress permet d’obtenir toutes les informations attachées à une adresse IP. Voici les méthodes utilisables :

Méthode Utilité
InetAddress getByName(String) Retourne l’adresse internet associée au nom d’hôte fourni
InetAddress[] getAllByName(String) Retourne un tableau des adresses internet associées au nom d’hôte fourni
InetAddress getLocalHost() Retourne l’adresse internet de la machine locale
byte[] getAddress() Retourne un tableau contenant les quatre octets de l’adresse internet
String getHostAddress() Retourne l’adresse internet sous la forme d’une chaîne de caractères
String getHostName() Retourne le nom du serveur

 

Voici un exemple de code qui utilise les méthodes de la classe InetAddress :

import java.net.*;
public class InetAdresse {

   public static void main(String[] args) {
    try {
      InetAddress adrLocale = InetAddress.getLocalHost();
      System.out.println("Adresse IP locale = "+adrLocale.getHostAddress());
      InetAddress adrServeur = InetAddress.getByName("www.microsoft.com");
      System.out.println("Adresse IP de Microsoft = "+adrServeur.getHostAddress());
      InetAddress[] adrServeurs = InetAddress.getAllByName("www.google.com");
      System.out.println("Les adresses IP de Google : ");
      for (InetAddress s:adrServeurs)
          System.out.println("     "+s.getHostAddress());
    } catch (Exception e) {
        e.printStackTrace();
    }
  }
}

Voici le résultat :

 

 


Cette section va vous montrer comment échanger des flux de données sur la couche TCP/IP.

Quelques notions de base

Java propose plusieurs classes et interfaces destinées à faciliter l’utilisation du réseau via les sockets. Ces classes et interfaces sont regroupées dans le package java.net. Les échanges client/serveur se font en utilisant le protocole réseau IP et le protocole de transport TCP ou UDP :

  • Le protocole IP (Internet Protocol) permet d’échanger des paquets d’octets. Ce protocole ne garantit pas que les paquets arrivent jusqu’à leur destinataire. Cette opération peut se faire par un autre protocole tel que TCP.
  • Les protocoles TCP (Transmission Control Protocol) et UDP (User Datagram Protocol) permettent la communication entre deux applications sur des machines distantes.

Les sockets sont implémentés sur tous les systèmes qui utilisent TCP/IP. Ils correspondent à des points de communication par lesquels des informations peuvent être émises par un thread.

Les communications se font sur un port de la machine, identifié par un entier compris entre 1 et 65535.

Les adresses Internet permettent d’identifier de façon unique une machine sur un réseau en utilisant quatre octets séparés par un point. Par exemple : 123.186.12.45

Pour faciliter la compréhension de ces adresses, on utilise un serveur DNS (Domain Name Server) qui associe un nom à chaque adresse IP.