Introduction aux
sockets
Par SoftDeath
www.siteduzero.com
Licence Creative Commons 2 2.0
Dernière mise à jour le 15/05/2012
Sommaire
2Sommaire ...........................................................................................................................................
1Lire aussi ............................................................................................................................................
3 Introduction aux sockets ....................................................................................................................
4Récupérer une adresse IP avec InetAddress ...................................................................................................................
5Qu'est-ce qu'un socket ? ...................................................................................................................................................
8Échange de message .......................................................................................................................................................
11Côté Serveur .............................................................................................................................................................................................................
11Côté Client .................................................................................................................................................................................................................
11Utilisation des threads ...............................................................................................................................................................................................
13TP : un mini-chat entre le client et le serveur ! ................................................................................................................
22Q.C.M. .............................................................................................................................................................................
23Partager .....................................................................................................................................................................................................................
2/24
www.siteduzero.com
Introduction aux sockets
Par SoftDeath
Mise à jour : 15/05/2012
Difficulté : Difficile
1 536 visites depuis 7 jours, classé 91/797
Bienvenue dans mon tout premier mini-tutoriel consacré aux sockets en langage Java. On ne va pas tout apprendre sur les
sockets mais étudier le plus important concernant ces classes du répertoire java.net.
Avant de vous lancer dans la lecture de ce tutoriel, les deux premières parties de cysboy sur le langage Java ainsi que la
lecture de celui sur les threads et les flux d'entrées et sorties (1/2) sont primordiales pour bien suivre le cours !
Je vous recommande également de lire le chapitre de Dalshim Bien fermer ses threads en Java si vous voulez bien maîtriser la
fermeture de vos threads.
Les sockets servent à communiquer entre deux hôtes appelés Client / Serveur à l'aide d'une adresse IP et d'un port que j'appelle
prise ; ces sockets permettront de gérer des flux entrant et sortant afin d'assurer une communication entre les deux (le client et le
serveur), soit de manière fiable à l'aide du protocole TCP/IP, soit non fiable mais plus rapide avec le protocole UDP. Nous allons
étudier le premier mode, le mode TCP/IP
Voici ce qu'on peut réaliser à l'aide des sockets :
des jeux en ligne ;
des systèmes distribués ;
des espaces messengers comme MSN Messenger, Yahoo Messenger, ;
des applications comme BitComet permettant de gérer les fichiers .torrent que vous connaissez ;
et bien d'autres choses.
Les sockets sont utilisés dans plusieurs autres langages, tels que :
le langage C : ( lien vers un tutoriel) ;
le langage C++ : (lien vers un autre tutoriel) ;
le langage PHP : (lien vers un troisième tutoriel) ;
l'Action Script : (aller lire le tutoriel) ;
le Erlang : (lien vers le tuto concerné) ;
et bien d'autres.
Lire les parties « histoire » et « définitions » de tutoriels ci-dessus ne vous fera pas de mal.
Ne tardons pas et commençons.
Sommaire du tutoriel :
Récupérer une adresse IP avec InetAddress
Qu'est-ce qu'un socket ?
Échange de message
TP : un mini-chat entre le client et le serveur !
Q.C.M.
Sommaire 3/24
www.siteduzero.com
Récupérer une adresse IP avec InetAddress
Le package java.net de la plate-forme Java fournit une classe InetAddress qui nous permet de récupérer et manipuler son adresse
internet, IP pour les intimes. Cette classe n'a pas de constructeur, pour pouvoir avoir une instance de cette classe on a besoin
des méthodes de classe. Voici les méthodes dont je vous parle :
getLocalHost() : elle retourne un objet qui contient l'adresse IP de la machine locale.
getByName(String nom_de_l_machine) : elle retourne un objet qui contient l'adresse IP de la machine dont le nom est
passé en paramètre.
getAllByName(String nom_de_l_machine) : elle retourne un tableau d'objets qui contient l'ensemble d'adresses IP de la
machine qui correspond au nom passé en paramètre.
A présent, voyons les méthodes applicables à un objet de cette classe :
getHostName() : elle retourne le nom de la machine dont l'adresse est stockée dans l'objet.
getAddress() : elle retourne l'adresse IP stockée dans l'objet sous forme d'un tableau de 4 octets.
toString() : elle retourne un String qui correspond au nom de la machine et son adresse.
Et pour terminer un petit exemple :
Code : Java
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Adressage {
public static void main(String[] zero) {
InetAddress LocaleAdresse ;
InetAddress ServeurAdresse;
try {
LocaleAdresse = InetAddress.getLocalHost();
System.out.println("L'adresse locale est : "+LocaleAdresse );
ServeurAdresse= InetAddress.getByName("www.siteduzero.com");
System.out.println("L'adresse du serveur du
site du zéro est : "+ServeurAdresse);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
Et le résultat est :
Code : Console
L'adresse locale est : softdeath/239.254.78.177
L'adresse du serveur du site du zéro est : www.siteduzero.com/80.248.219.123
Introduction aux sockets 4/24
www.siteduzero.com
Fastoche, hein ?
La classe InetAdress peut lever une exception de type Unk nownHostException, tâchez de ne pas l'oublier !
Nous savons maintenant comment récupérer l'adresse IP de notre machine ou d'une machine distante, que diriez-vous si l'on
l'utilisait pour créer notre tout premier socket ? C'est parti
Qu'est-ce qu'un socket ?
Un socket est un point de terminaison d'une communication bidirectionnelle, c'est-à-dire entre un client et un serveur en cours
d'exécution sur un réseau donné. Les deux sont liés par un même numéro de port TCP de sorte que la couche puisse identifier la
demande de partage de données.
Un serveur fonctionne sur une machine bien définie et est lié à un numéro de port spécifique. Le serveur se met simplement à
l'écoute d'un client, qui demande une connexion.
En outre, java.net comprend la classe ServerSocket, qui met en oeuvre une sorte de prise que les serveurs peuvent utiliser pour
écouter et accepter les connexions des clients. Ce qui nous donne :
Code : Java
ServerSocket socketserver = new ServerSocket(numero_port);
Ainsi on obtient un objet de la classe ServerSock et sur un port spécifique : si ce dernier est à 0, le socket est créée sur n'importe
quel port libre.
Il existe deux autres constructeurs ; l'un a deux paramètres, le premier est bien sûr le numéro de port et le nombre total de
connexion simultanées acceptées, voyez :
Code : Java
ServerSocket socketserver = new ServerSocket(numer_port,nbr_max);
nbr_max est le nombre maximal de connexions traitées simultanément. Par exemple au-delà de cinq tentatives de connexion
consécutives autorisées, les connexions sont refusés.
Introduction aux sockets 5/24
www.siteduzero.com
1 / 23 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !