Académique Documents
Professionnel Documents
Culture Documents
Olivier Goutet
o.goutet@openium.fr
1 mars 2013
1 / 30
Plan
Images
Réseau
2 / 30
java.awt.Image
• Vue image
• Gère les formations GIF, JPEG, PNG, ...
• Images statiques
• Images dynamiques
3 / 30
java.awt.Image
4 / 30
Ouverture d'une image
5 / 30
BueredImage
6 / 30
BueredImage
7 / 30
Achage d'une image
try {
BufferedImage img = null ;
img = ImageIO . read ( new File ( " strawberry . jpg " ));
ImageIcon icon = new ImageIcon ( img );
} catch ( IOException e ) {
e . printStacktrace ();
}
8 / 30
TP
• Questions sur le TP ?
9 / 30
Plan
Images
Réseau
10 / 30
Java et réseau
11 / 30
Sockets
12 / 30
Sockets
• Socket
◦ Avec connexion et sécurité de transmission
◦ Téléphone (TCP)
• DatagramSocket
◦ Pas de connexion, pas d'ordre d'arrivée garanti
◦ La poste (UDP)
• MulticastSocket
◦ DatagramSocket multicast
13 / 30
Client / Serveur
• Serveur
◦ Attends les connexions sur un port
◦ accept() les connexions
• Créée une socket par client.
◦ java.net.ServerSocket
◦ Un seul objet ServerSocket
14 / 30
Client / Serveur
Learning Java 2nd edition O'Reilly Pat Neiemeyer & Jonathan Knudsen
15 / 30
Client / Serveur
try {
Socket sock1 = new Socket ( " openium . fr " ,25);
Socket sock2 = new Socket ( " 91.121.54.191 " ,25);
} catch ( UnknownHostException e ){
System . out . println ( " On ne trouve pas le serveur " );
} catch ( IOException e ){
System . out . println ( " Impossible de se connecter " );
}
16 / 30
Exemple de client
try {
Socket server = new Socket ( " openium . fr " , 1234);
InputStream in = server . getInputStream ( );
OutputStream out = server . getOutputStream ( );
BufferedReader bin =
new BufferedReader ( new InputStreamReader ( in ) );
String response = bin . readLine ( );
server . close ( );
} catch ( IOException e ) { ... }
17 / 30
Exemple de serveur
try {
ServerSocket listener = new ServerSocket ( 1234 );
while ( ! finished ) {
Socket client = listener . accept ( );
19 / 30
Exemple : serveur http
20 / 30
Exemple : serveur http (1)
class TinyHttpdConnection implements Runnable {
Socket client ;
TinyHttpdConnection ( Socket client ) throws SocketException {
this . client = client ;
}
public void run ( ) {
try {
BufferedReader in = new BufferedReader (
new InputStreamReader ( client . getInputStream () , " 8859 _1 " ));
OutputStream out = client . getOutputStream ( );
PrintWriter pout = new PrintWriter (
new OutputStreamWriter ( out , " 8859 _1 ") , true );
String request = in . readLine ( );
System . out . println ( " Request : "+ request );
// Traitement
client . close ( );
} catch ( IOException e ) {
System . out . println ( "I/ O error " + e ); }
}
}
21 / 30
Exemple : serveur http (2)
Matcher get = Pattern . compile (" GET /?(\\ S *).* " ). matcher ( request );
if ( get . matches ( ) ) {
request = get . group (1);
if ( request . endsWith ("/") || request . equals ("" ) )
request = request + " index . html " ;
try {
FileInputStream fis = new FileInputStream ( request );
byte [] data = new byte [ 64*1024 ];
for ( int read ; ( read = fis . read ( data )) > -1; ){
out . write ( data , 0, read );
}
out . flush ( );
} catch ( FileNotFoundException e ) {
pout . println ( " 404 Object Not Found " ); }
} else {
pout . println ( " 400 Bad Request " );
}
Learning Java 2nd edition O'Reilly Pat Neiemeyer & Jonathan Knudsen
22 / 30
8859_1 ?
• Encodage de caractères
• Issu de la Requests For Comments (RFC) HTTP
◦ (http ://www.ietf.org/rfc/rfc2616.txt)
• Uniquement de l'ascii
• Tous les serveurs doivent la respecter
23 / 30
Types de sockets
24 / 30
DatagramSocket (UDP)
• Inconvénients
◦ Les données n'arrivent pas toujours
◦ Pas toujours dans le bon ordre
◦ En double
• Avantages
◦ Rapide
25 / 30
Client SocketDatagram
26 / 30
Server SocketDatagram
27 / 30
Exercice
28 / 30
Exercice
• Le client envoie
◦ Un objet de type requête
• Le client reçoit
◦ Le résultat de la requête
• Le serveur reçoit
◦ Un objet de type requête
• Le serveur renvoie
◦ Le résultat de la requête
29 / 30
Exercice
public class Request implements java . io . Serializable {}
public class DateRequest extends Request {}
Learning Java 2nd edition O'Reilly Pat Neiemeyer & Jonathan Knudsen
30 / 30