You are on page 1of 34

Rappels - Sockets en Java

Ces diapos sont fortement inspirées de


Karima Boudaoud IUT-R&T

1 2017-2018
Rappel TCP IP et ports
• Les ports numérotés de 0 à 511 sont les "well known ports" de
l'architecture TCP/IP. Ils donnent accès aux services standard de
l'interconnexion :
– transfert de fichiers (FTP port 21), terminal (Telnet port 23), courrier
(SMTP port 25), serveur web (HTTP port 80)
– De 512 à 1023, on trouve les services Unix.
– Au delà, (1024 ...) ce sont les ports "utilisateurs" disponibles pour
placer un service applicatif quelconque.
– Une connexion est identifiée de façon unique par la donnée de deux
couples, une adresse IP et un numéro de port, un pour le client et un
autre pour le serveur.
• Une communication client/serveur n'a pas forcément lieu via un
réseau. Il est en effet possible de faire communiquer un client et un
serveur sur une même machine, via l'interface de loopback,
représentée par convention par l'adresse IP 127.0.0.1.

2
Adressage
• Adressage pour communication entre applications
• Adresse « réseau » application = couple de 2 informations Adresse
IP et numéro de port
Couche réseau : adresse IP
• Ex : 192.129.12.34
Couche transport : numéro de port TCP ou UDP
• Ce numéro est en entier d'une valeur quelconque
• Ports < 1024 : réservés pour les applications ou protocoles systèmes
Exemple : 80 = HTTP, 21 = FTP, ...
• Sur un port : réception ou envoi de données
• Adresse notée : @IP:port & nomMachine:port
192.129.12.34:80 : accès au serveur Web tournant sur la machine
d'adresse IP 192.129.12.34

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Complément sur les sockets

27
28
Classe java.net.InetAdress
Pas de constructeur. Création par getByName(),
• getLocalHost(), getAllByName().
Méthodes statiques :
• InetAddress getByName(String host),
• InetAddress getLocalHost(),
• InetAddress[] getAllByName(String host).
Méthodes d’instance :
• byte[] getAddress(),
• string getHostName(),
• string getHostAddress(),
• boolean isMulticastAddress()

29
Classe java.net.InetAdress
Exceptions : UnknownHostException,
SecurityException

30
Classe java.net.Socket
Constructeurs: Créer une socket établit
automatiquement une connexion à l’hôte et au port
spécifiés. Il doit y avoir un serveur en écoute sur ce port.
Sinon, une IOException est levée (correspondant à une
“connexion refused”).
• Socket(String host, int port) throws IOException
• Socket(InetAddress address, int port) throws
IOException
• Socket(String host, int port, InetAddress localAddress,
int localPort) throws IOException
• Socket(InetAddress address, int port, InetAddress
localAddress, int localPort) throws IOException

31
Classe java.net.Socket
Méthodes
• InputStream getInputStream() throws IOException
– Pour des raisons d’efficacité, il est louable de “bufferiser” les flux de Sockets.
• outputStream getOutputStream() throws IOException
• void close() thows IOException
• InetAddress getInetAddress()
• int getPort()
• InetAddress getLocalAddress()
• int getLocalPort()
• void setSocketTimeout( int timeout) throws SocketException
• int getSocketTimeout(int timeout) throws SocketException
• void setTcpNoDelay(boolean on) throws SocketException
• boolean getTcpNoDelay() throws SocketException
• void setSocketLinger(boolean on, int val) throws SocketException
• int getSocketLinger() throws SocketException
• void setSendBufferSize(int size) throws SocketException
• int getSendBufferSize() throws SocketException
• void setRecieveBufferSize(int size) throws SocketException
• int getRecieveBufferSize() throws SocketException
32
Classe java.net.Socket
Exceptions
Il y a 2 exceptions principales :
• SocketException fille de IOException,
• SecurityException.

33
Classe java.net.ServerSocket
Constructeurs
• ServerSocket(int port) throws IOException
• ServerSocket(int port, int backlog) throws IOException
• ServerSocket(int port, int backlog, InetAddress bindAddress) throws
• IOException
Méthodes
• Socket accept() throws IOException
• void close() throws IOException
• InetAddress getInetAddress()
• int getLocalPort()
• void setSocketTimeout(int timeout) throws SocketException
• int getSocketTimeout() throws IOException
• protected final void implAccept(Socket s) throws IOException

34

You might also like