Un exemple d'application Client-Serveur
WB01624_.gif (281 octets) RETOUR

Votre navigateur ne prend pas en charge Java

Votre navigateur ne prend pas en charge Java

Ces deux applets se connectent sur le port 5555 sur le serveur WEB d'où elles ont été téléchargées. Sur cette machine doit fonctionner une application java à même d'interpréter cette connexion comme une requête pour l'obtention de l'heure sur le serveur.

La première applet propose un bouton pour lancer la requête. La deuxième effectue l'interrogation automatiquement et affiche le résultat (mise à jour environ une fois par seconde).

Horizontale.gif (2348 octets)

Le programme serveur programmé sans Thread

import java.net.* ;
import java.io.* ;
import java.util.* ;
public class ServeurExemple4 {
  public static void main(String [] args) {
    ServerSocket srv ;
    int port = 5555 ;
    try {
      srv = new ServerSocket(port) ;
      System.out.println("Serveur Ok") ;
      while ( true ) {
        Socket connexion = srv.accept() ;
        OutputStream os ;
        os = connexion.getOutputStream() ;
        DataOutputStream oos ;
        oos= new DataOutputStream(os) ;
        GregorianCalendar gc ;
        gc = new GregorianCalendar() ;
        int h =(int) gc.get(Calendar.HOUR) ;
        oos.writeInt(h) ;
        int mn =(int) gc.get(Calendar.MINUTE) ;
        oos.writeInt(mn) ;
        int sec =(int) gc.get(Calendar.SECOND) ;
        oos.writeInt(sec) ;
        int ml =(int) gc.get(Calendar.MILLISECOND);
        oos.writeInt(ml) ;
        connexion.close() ; } }
    catch(IOException e) { }
    }
  }

Horizontale.gif (2348 octets)

Le programme client de la première applet

Une classe dérivée de Applet

import java.applet.Applet ;
import java.awt.* ;
import java.awt.event.* ;
import java.net.* ;
import java.io.* ;
import java.util.* ;
public class Exemple4 extends Applet
                      implements ActionListener {
  private Button ok ;
  private Label lb ;
  private String host ;
  public void init() {
    URL url = getDocumentBase() ;
    host = url.getHost() ;
    setLayout(new GridLayout(2,1,10,10));
    add(lb = new Label("",Label.CENTER));
    add(ok = new Button("Heure sur "+host));
    ok.addActionListener(this) ;
    }
  public void actionPerformed(ActionEvent e) {
    Socket s ;
    int port = 5555 ;
    try {
      s = new Socket(host,port) ;
      InputStream is = s.getInputStream() ;
      DataInputStream ois ;
      ois = new DataInputStream(is) ;
      int hr = ois.readInt() ;
      int mn = ois.readInt() ;
      int sc = ois.readInt() ;
      int ml = ois.readInt() ;
      lb.setText(hr+":"+mn+":"+sc+":"+ml) ;
      repaint() ;
      ois.close() ; }
    catch (UnknownHostException uhe) {
      lb.setText(uhe.toString()) ; } 
    catch (IOException ioe) {
      lb.setText(ioe.toString()) ; } ;
    } 
  }

Horizontale.gif (2348 octets)

Le programme client de la deuxième applet

Une classe dérivée de Applet

import java.applet.Applet ;
import java.awt.* ;
import java.net.* ;          
public class Exemple5 extends Applet {
  private Label lb ;
  private String host ;          
  public void init() {
    URL url = getDocumentBase() ;
    host = url.getHost() ;
    setLayout(new GridLayout(2,1,10,10));
    add(lb = new Label("",Label.CENTER));
    ThreadExemple5 te5 ;
    te5 = new ThreadExemple5(host,lb) ;
    te5.start() ;
    }
  }

Une classe dérivée de Thread

import java.awt.* ;
import java.net.* ;
import java.io.* ;          
public class ThreadExemple5 extends Thread {
  private Label lb ;
  private String host ;          
  public ThreadExemple5(String s,Label l) {
    lb = l ;
    host = s ;
    }          
  public void run() {
    boolean bRun = true ;
    while ( bRun) {
      Socket s ;
      int port = 5555 ;
      try {
        s = new Socket(host,port) ;
        InputStream is = s.getInputStream() ;
        DataInputStream ois ;
        ois = new DataInputStream(is) ;
        int hr = ois.readInt() ;
        int mn = ois.readInt() ;
        int sc = ois.readInt() ;
        int ml = ois.readInt() ;
        lb.setText("Heure sur "+host+" : "
          +hr+":"+mn+":"+sc+":"+ml) ;
        ois.close() ; }
      catch (UnknownHostException uhe) {
        bRun = false ;
        lb.setText(uhe.toString()) ; } 
      catch (IOException ioe) {
        bRun = false ;
        lb.setText(ioe.toString()) ; } ;
      try {
        sleep(1000) ; }
      catch (Exception e) { } ; }
    } 
  }
Horizontale.gif (2348 octets)