0% ont trouvé ce document utile (0 vote)
149 vues30 pages

Cours Java 7

Transféré par

Dimitri Pireyre
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
149 vues30 pages

Cours Java 7

Transféré par

Dimitri Pireyre
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Interfaces graphiques  Java

IUT informatique des Cézeaux  SI 2012/2013

Olivier Goutet
[email protected]

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

BufferedImage img = null ;


try {
img = ImageIO . read ( new File ( " strawberry . jpg " ));
} catch ( IOException e ) {
e . printStracktrace ();
}

5 / 30
BueredImage

• Permet d'accéder à un pixel de l'image


◦ int getRGB(int x, int y)
• Pouquoi un int ?

6 / 30
BueredImage

• Permet d'accéder à un pixel de l'image


◦ int getRGB(int x, int y)

7 / 30
Achage d'une image

try {
BufferedImage img = null ;
img = ImageIO . read ( new File ( " strawberry . jpg " ));
ImageIcon icon = new ImageIcon ( img );

JLabel label = new JLabel ( icon );


// Ajouter le label dans l ' interface

} catch ( IOException e ) {
e . printStacktrace ();
}

8 / 30
TP

• Questions sur le TP ?

9 / 30
Plan

Images

Réseau

10 / 30
Java et réseau

• Raison d'être de java


• Découpé en deux parties
◦ java.net
• Sockets
◦ java.rmi
• Remote Method invocation

11 / 30
Sockets

• Interface de programmation réseau bas niveau


• Envoi de données entre applications
• Les classes de java.net rendent facile la communication
• Streams
◦ Lecture / écriture chier <=> réseau

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

• Crée une socket


• Se connecte à un 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 ( );

PrintWriter pout = new PrintWriter ( out , true );


pout . println ( " Hello server ! " );

out . write (42);


byte someByte = ( byte ) in . read ( );

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 ( );

InputStream in = client . getInputStream ( );


OutputStream out = client . getOutputStream ( );

BufferedReader bin = new BufferedReader ( new InputStreamReader ( in ));


String someString = bin . readLine ( );

byte someByte = ( byte ) in . read ( );


out . write ( someByte +2);

PrintWriter pout = new PrintWriter ( out , true );


pout . println ( " Goodbye !" );
client . close ( );
}
listener . close ( );
} catch (...)
18 / 30
Exemple : serveur http

• Construire un serveur Web


◦ Retourne les chiers qu'on lui demande
◦ Multithread
• GET /chemin/fichier

19 / 30
Exemple : serveur http

public class TinyHttpd {

public static void main ( String argv [] )


throws IOException {
ServerSocket ss = new ServerSocket (
Integer . parseInt ( argv [0]));
while ( true ) {
new Thread ( new TinyHttpdConnection ( ss . accept ()))
. start ();
}
}
}

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

• TCP (Socket) s'occupe de tout


◦ L'ordre
◦ L'intégrité
◦ Connexion
• Pas UDP...

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

byte [] data = message . getBytes ( );


InetAddress addr = InetAddress . getByName ( myHost );
DatagramPacket pack =
new DatagramPacket ( data , data . length , addr , myPort );
DatagramSocket ds = new DatagramSocket ( );
ds . send ( pack );
ds . close ( );

26 / 30
Server SocketDatagram

DatagramSocket s = new DatagramSocket ( port );


while ( true ) {
DatagramPacket packet =
new DatagramPacket ( new byte [1024] , 1024);
s . receive ( packet );
String message = new String ( packet . getData ( ) );
System . out . println ( " message from : "
+ packet . getAddress ( ). getHostName ( )
+ " - " + message );
}

27 / 30
Exercice

• Transmettre de requêtes d'un client à un serveur


• Executer cette requête sur le serveur
• Retourner le résultat via le réseau

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 {}

public abstract class WorkRequest extends Request {


public abstract Object execute ( );
}
public class AuCarre extends WorkRequest {
int n ;

public AuCarre ( int n ) {


this . n = n ;
}
public Object execute ( ) {
return new Integer ( n * n );
}
}

Learning Java 2nd edition  O'Reilly  Pat Neiemeyer & Jonathan Knudsen
30 / 30

Vous aimerez peut-être aussi