Podcast
Questions and Answers
Quel objet côté client enverra les messages reçus par l'objet Scanner côté serveur?
Quel objet côté client enverra les messages reçus par l'objet Scanner côté serveur?
Quelle méthode permet de fermer une connexion de socket?
Quelle méthode permet de fermer une connexion de socket?
Quelle méthode est utilisée pour obtenir le flux d'entrée dans un objet Socket?
Quelle méthode est utilisée pour obtenir le flux d'entrée dans un objet Socket?
Quel constructeur de la classe Socket prend en entrée un InetAddress et un port?
Quel constructeur de la classe Socket prend en entrée un InetAddress et un port?
Signup and view all the answers
Quelles informations peut-on obtenir sur une socket côté client?
Quelles informations peut-on obtenir sur une socket côté client?
Signup and view all the answers
Quel est l'objectif principal des threads dans un serveur multithreadé?
Quel est l'objectif principal des threads dans un serveur multithreadé?
Signup and view all the answers
Quelle méthode envoie des données dans le flux d'un PrintWriter?
Quelle méthode envoie des données dans le flux d'un PrintWriter?
Signup and view all the answers
Quel attribut est associé à la fermeture d'un flux dans une communication de socket?
Quel attribut est associé à la fermeture d'un flux dans une communication de socket?
Signup and view all the answers
Quel est l'objectif principal de la programmation des sockets ?
Quel est l'objectif principal de la programmation des sockets ?
Signup and view all the answers
Quel type de service de transport offre l'API Socket ?
Quel type de service de transport offre l'API Socket ?
Signup and view all the answers
Qui contrôle le socket dans un processus TCP ?
Qui contrôle le socket dans un processus TCP ?
Signup and view all the answers
Que doit faire le serveur avant qu'il puisse communiquer avec un client ?
Que doit faire le serveur avant qu'il puisse communiquer avec un client ?
Signup and view all the answers
Comment le client contactera-t-il le serveur ?
Comment le client contactera-t-il le serveur ?
Signup and view all the answers
Quel rôle joue TCP dans la communication entre un client et un serveur ?
Quel rôle joue TCP dans la communication entre un client et un serveur ?
Signup and view all the answers
Quel est un aspect fondamental du concept de 'stream' (flux) ?
Quel est un aspect fondamental du concept de 'stream' (flux) ?
Signup and view all the answers
Quel est le rôle des numéros de port dans la communication avec un serveur ?
Quel est le rôle des numéros de port dans la communication avec un serveur ?
Signup and view all the answers
Pourquoi est-il important que le processus de serveur soit en cours d'exécution ?
Pourquoi est-il important que le processus de serveur soit en cours d'exécution ?
Signup and view all the answers
Quelle est la principale différence entre un datagramme peu fiable et un flux d'octets fiable ?
Quelle est la principale différence entre un datagramme peu fiable et un flux d'octets fiable ?
Signup and view all the answers
Quel est l'effet d'utiliser le second argument true
lors de la création d'un objet PrintWriter ?
Quel est l'effet d'utiliser le second argument true
lors de la création d'un objet PrintWriter ?
Signup and view all the answers
Quelle méthode est utilisée pour envoyer des données avec PrintWriter ?
Quelle méthode est utilisée pour envoyer des données avec PrintWriter ?
Signup and view all the answers
Pourquoi est-il recommandé d'utiliser des blocs try séparés lors de l'ouverture du port et du dialogue avec le client ?
Pourquoi est-il recommandé d'utiliser des blocs try séparés lors de l'ouverture du port et du dialogue avec le client ?
Signup and view all the answers
Que doit comporter la clause finally pour gérer la fermeture de la socket ?
Que doit comporter la clause finally pour gérer la fermeture de la socket ?
Signup and view all the answers
Quelles informations faut-il fournir pour créer un objet Socket ?
Quelles informations faut-il fournir pour créer un objet Socket ?
Signup and view all the answers
Quel est le but de la méthode getLocalHost de la classe InetAddress ?
Quel est le but de la méthode getLocalHost de la classe InetAddress ?
Signup and view all the answers
Qu'est-ce qui peut provoquer une IOException lors de la connexion à un serveur ?
Qu'est-ce qui peut provoquer une IOException lors de la connexion à un serveur ?
Signup and view all the answers
Quel est le comportement par défaut du tampon de sortie lorsqu'on n'utilise pas true
comme deuxième argument pour PrintWriter ?
Quel est le comportement par défaut du tampon de sortie lorsqu'on n'utilise pas true
comme deuxième argument pour PrintWriter ?
Signup and view all the answers
Quel est le rôle principal de la classe DatagramSocket en UDP?
Quel est le rôle principal de la classe DatagramSocket en UDP?
Signup and view all the answers
Pourquoi dit-on qu'un datagramme est un message indépendant?
Pourquoi dit-on qu'un datagramme est un message indépendant?
Signup and view all the answers
Que contient un DatagramPacket lors de l'envoi de données?
Que contient un DatagramPacket lors de l'envoi de données?
Signup and view all the answers
Quand les datagrammes sont-ils généralement utilisés?
Quand les datagrammes sont-ils généralement utilisés?
Signup and view all the answers
Quelle affirmation est vraie concernant l'envoi d'un datagramme?
Quelle affirmation est vraie concernant l'envoi d'un datagramme?
Signup and view all the answers
Quel est un inconvénient principal de l'utilisation des datagrammes?
Quel est un inconvénient principal de l'utilisation des datagrammes?
Signup and view all the answers
Comment est-ce que DatagramPacket gère les données reçues?
Comment est-ce que DatagramPacket gère les données reçues?
Signup and view all the answers
Quel est le principal usage des paquets de datagrammes?
Quel est le principal usage des paquets de datagrammes?
Signup and view all the answers
Quelle méthode retourne l'adresse IP de la machine à laquelle ce datagramme est envoyé ?
Quelle méthode retourne l'adresse IP de la machine à laquelle ce datagramme est envoyé ?
Signup and view all the answers
Quel est le but de la méthode setLength(int length) ?
Quel est le but de la méthode setLength(int length) ?
Signup and view all the answers
Parmi les constructeurs suivants, lequel est utilisé pour recevoir des paquets en spécifiant une longueur et un décalage ?
Parmi les constructeurs suivants, lequel est utilisé pour recevoir des paquets en spécifiant une longueur et un décalage ?
Signup and view all the answers
Quel constructeur serait approprié pour envoyer des paquets vers un hôte spécifique sur un port donné ?
Quel constructeur serait approprié pour envoyer des paquets vers un hôte spécifique sur un port donné ?
Signup and view all the answers
Quelle méthode permet de modifier le port d'un datagramme ?
Quelle méthode permet de modifier le port d'un datagramme ?
Signup and view all the answers
Que renvoie la méthode getData() ?
Que renvoie la méthode getData() ?
Signup and view all the answers
Quel est le rôle de la méthode setData(byte[] buf, int offset, int length) ?
Quel est le rôle de la méthode setData(byte[] buf, int offset, int length) ?
Signup and view all the answers
Quel constructeur crée un datagramme pour recevoir des paquets avec une longueur spécifique ?
Quel constructeur crée un datagramme pour recevoir des paquets avec une longueur spécifique ?
Signup and view all the answers
Quel type d'exception est lancé si l'adresse est valide mais le port est hors de portée ?
Quel type d'exception est lancé si l'adresse est valide mais le port est hors de portée ?
Signup and view all the answers
Que renvoie la méthode getPort() si le socket n'est pas connecté ?
Que renvoie la méthode getPort() si le socket n'est pas connecté ?
Signup and view all the answers
Que se passe-t-il lorsque le timeout de SO_TIMEOUT est réglé sur zéro ?
Que se passe-t-il lorsque le timeout de SO_TIMEOUT est réglé sur zéro ?
Signup and view all the answers
Quel effet a la méthode setSendBufferSize() sur une connexion UDP ?
Quel effet a la méthode setSendBufferSize() sur une connexion UDP ?
Signup and view all the answers
Que doit faire l'application si elle souhaite vérifier la taille des buffers après les avoir définis ?
Que doit faire l'application si elle souhaite vérifier la taille des buffers après les avoir définis ?
Signup and view all the answers
Quelles conditions doivent être remplies pour que la méthode setSoTimeout() ait un effet ?
Quelles conditions doivent être remplies pour que la méthode setSoTimeout() ait un effet ?
Signup and view all the answers
Quelle exception peut être levée si la méthode setReceiveBufferSize() est appelée avec une taille négative ?
Quelle exception peut être levée si la méthode setReceiveBufferSize() est appelée avec une taille négative ?
Signup and view all the answers
Quel est le rôle de la méthode getInetAddress() ?
Quel est le rôle de la méthode getInetAddress() ?
Signup and view all the answers
Study Notes
Introduction à INF4032 Réseaux Informatiques
- Le cours porte sur la programmation de réseaux, plus précisément sur les sockets.
- L'objectif est d'apprendre à créer des applications client-serveur qui communiquent à l'aide de sockets.
Programmation des Sockets
- La Socket API a été introduite en 1981 dans BSD4.1 UNIX.
- Elle sert à la création, l'utilisation et la libération d'applications client-serveur.
- Deux types de services de transport sont utilisés via la Socket API :
- Un modèle de datagramme non fiable
- Un modèle de flux binaire fiable
- Un socket est une interface hôte-locale, créée par l'application, contrôlée par le système d'exploitation, servant de passerelle au processus d'application pour envoyer et recevoir des messages avec d'autres applications.
Programmation de Socket avec TCP
- Un socket est une interface entre un processus d'application et un protocole de transport final (UDP ou TCP).
- Le service TCP assure un transfert fiable d'octets d'un processus à un autre,
- Le contrôle est géré par le système d'exploitation et l'application.
Programmation de Socket en TCP
- Le serveur reçoit la demande de connexion du client via un socket d'accueil.
- Le client crée un socket TCP local pour contacter le serveur.
- Le serveur crée aussi un socket TCP pour répondre au client.
- Le client spécifie l'adresse IP et le numéro de port du serveur.
- TCP permet au serveur de dialoguer avec plusieurs clients via des ports différents.
Jargon : STREAM (Flux)
- Un stream est une séquence de caractères entrant ou sortant d'un processus.
- Un flux d'entrée est lié à une source d'entrée (clavier ou socket).
- Un flux de sortie est lié à une destination de sortie (moniteur ou socket).
Exemple d'application client-serveur (TCP)
- Un client lit une ligne d'entrée standard et la transmet au serveur.
- Le serveur convertit la ligne en majuscules et la renvoie au client.
- Le client affiche la ligne convertie.
Interaction Socket Client/Serveur (TCP)
- Le serveur crée un socket et attend les connexions entrantes.
- Le client établit une connexion au serveur.
- Le client envoie une requête.
- Le serveur reçoit la requête et envoie une réponse.
- Le client reçoit la réponse.
- Les connexions sont fermées.
### Sockets
- Le serveur utilise un socket d'accueil pour recevoir les requêtes des clients.
- Une poignée de main à trois voies est établie entre le client et le serveur.
Application Echo
- Le serveur reçoit et renvoie les messages du client.
- Le serveur envoie un message "CLOSE" lorsqu'une connexion doit être fermée.
Application Echo : Serveur – Étape 1
- Création d'un objet ServerSocket avec un numéro de port.
Application Echo : Serveur – Étape 1
- Les constructeurs ServerSocket() avec
bind(SocketAddress sockAddr)
oubind(SocketAddress sockAddr, int nbPendantes)
permettent le rattachement du socket TCP local. - On peut spécifier un nombre de connexions en attente.
Autres Constructeurs
- Différents constructeurs ServerSocket sont disponibles pour la création de sockets TCP spécifiant le port, le nombre de connexions en attentes et l'adresse.
Mettez le serveur en état d'attente
- La méthode
serverSock.accept()
met le serveur en mode attente de connexion d'un client, bloquante jusqu'à ce qu'une connexion soit établie. - Les sockets renvoyés par accept() correspondent à des connexions distinctes entre un client et le serveur.
- On peut utiliser la méthode
setSoTimeout()
pour spécifier un délai d'attente (en millisecondes) pour la méthodeaccept()
.
Configurer les flux d'entrée et de sortie
- Les méthodes
getInputStream()
etgetOutputStream()
fournissent des références aux flux associés au socket. - On peut utiliser des classes comme
Scanner
etPrintWriter
pour gérer les flux d'entrée et de sortie.
Envoyer et recevoir des données
- On envoie les données au serveur via
output.println()
. - On reçoit les données du serveur via
input.nextLine()
.
STEP 5
- On gère les exceptions
IOException
lors des opérations de socket. - Les blocs
try-finally
sont utilisés pour garantir la fermeture des sockets.
Application Echo : Client
- Création d'un socket client connecté à un serveur par son adresse et port.
Établir une connexion au serveur
- Un socket est créé pour connecter le client au serveur sur une adresse IP donnée et un numéro de port spécifique.
- La poignée de main à trois voies entre le client et le serveur gère la connexion.
### Étape 2 et 3
- Configuration des flux d'entrée et de sortie.
Exemple : LowPortScanner
Serveur Multithreadés
- Gestion de plusieurs connexions simultanément.
- Création de threads pour chaque connexion.
Revisitant le serveur Echo TCP
- Le serveur gère plusieurs clients simultanément.
- Utilisation d'une classe
ClientHandler
pour chaque client. - Prise en compte d'un backlog pour gérer les demandes des clients.
### UDP
- Protocole sans connexion.
- Chaque paquet est traité indépendamment.
- Pas de fiabilité.
Introduction à UDP
- UDP est un protocole de transport sans connexion.
- Il n'y a pas de prise de contact initiale entre les processus.
- Les paquets UDP sont indépendants.
- La livraison n'est pas garantie.
Implémentation d'UDP par Java
- L'implémentation Java d'UDP utilise les classes
DatagramPacket
etDatagramSocket
. - Les paquets sont gérés individuellement, en incluant l'adresse et le port dans les paquets eux-mêmes.
### Classe DatagramPacket
- Crée et gère les paquets.
- A quatre constructeurs.
### La Classe Datagram - Constructeurs
- Plusieurs constructeurs pour la création de
DatagramPacket
.
La Classe Datagram - Méthodes
- Des méthodes pour récupérer et définir les données et l'adresse destino
La Classe DatagramSocket - Constructeurs
La Classe DatagramSocket - Méthodes
La Classe Socket - Méthodes
- Des méthodes pour la connexion, la déconnexion, le temps d'attente, la taille du buffer (pour les envois et les réceptions).
Détail sur les sockets clients
- Informations sur les adresses IP, ports locaux et connectés, les buffers et la fermeture des connexions.
Exemple : LowPortScanner
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Testez vos connaissances sur la programmation des sockets en Java avec ce quiz. Vous serez interrogé sur les concepts clés, les méthodes et les processus impliqués dans la communication client-serveur. Ce quiz est parfait pour ceux qui souhaitent approfondir leur compréhension des sockets et des threads dans des applications réseau.