window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-66399486-1'); Les sockets | NETWORKVM

Les sockets

By NETWORKVM -
Les sockets permettant à des applications de communiquer entre elles via un réseau en échangeant des informations sous forme d'octets.

En java une socket est un objet de la classe java.net.socket (socket TCP) ou un objet de la classe java.net.datagramSocket (socket UP).

Les socket avec TCP (le mode connecté):
En mode connecté ,les deux parties se connaissent(établissement de connexion avant de procéder le transfert des données) ,et peuvent échanger plusieurs message ou les rejetés .
Exemple :la communication téléphonique

Coté serveur:

-1111: le numéro de port de l'application
Coté client:
-127.0.0.1: adresse IP du serveur
-1111:le  numéro de port du serveur


Résultat du test au niveau de serveur/client:


Rque:
Notre serveur va répondre à un seul client et s'arrêt.
Pour celà on va ajouter une boucle pour réexécuter le bloc qui se charge de traiter toutes les requêtes des clients:




























Maintenant le serveur est en écoute de façon permanente,mais il ne sert qu'un seul à la fois les autres doivent attendre leurs tour.

Serveur multithread:
Il peut servir plusieurs clients simultanément.

Notion de thread:
Un thread est une tache qu'on peut contrôler son exécution :démarrer,arrêter,suspendre,endormie l'exécution d'un thread.
On peut lancer l'exécution(démarrer) de plusieurs thread simultanément.

Il y'a pas d'exécution en même temps dans le cas d'un seul microprocesseur.

En java il existe deux façons pour définir les threads:

1-Héritage de la classe thread:

class MonThread extends Thread{
public void run(){
//Instruction exécutés par le thread
}
}

//Création d'un thread
MonThread mth=new MonThread();
//Lancement de thread
mth.start();

Remarques:
-Start nous permet d'externalisé l'exécution d'un thread.
-Si on met run il faut attendre jusqu'à la terminaison de l'exécution d'un programme pour lancer un      autre.

2-Implémentation de l'interface runnable:

interface runnable{
void run(); // Une seul méthode
}

class Tache implements runnable{
public void run(){
//Instruction à exécuter par un thread
}
}

Tache t=new Tache();
//on passe au thread un objet de type runnable (t)
Thread th=new Thread(t);
//lancement du thread
th.start();

Pour avoir un serveur multithread,il faut que le traitement fait par le serveur soit affecté à un thread (thread/client),ou par socket(coté serveur).

class MonThread extends Tread{
private socket s;
public traitement(socket s){
this.s=s;
}
public void run(){
//récupérer le flux de s
try{
InputStream is=new InputStream();
OutputStream os=new OutputStream();
//Communication avec le client
}
catch(Exception e){
//Message d'erreur
}
}
}

Le serveur doit alors :
ServerSocket ss=new ServerSocket(port);
while(true){
socket s=ss.accept();
traitement t=new traitement(s);
//Lancement du thread
t.start();
}


Tags: