IPST-CNAM
Applications Distribuées cycle C
Lundi 19 Juin 2000
Avec document
Durée : 2 heures
Enseignant : Mr LAFORGUE
CORRECTIONS
EXERCICES
import java.lang.*;
import java.util.*;
// La classe contenant les méthodes de l'énoncé
//
public class VectorParcours extends Vector // hérite de Vecteur
{
// position courante utilisé dans le parcours
private int position;
// Initialisation du parcours
public void initParcours()
{
position=0;
}
// Le aprcours se positionne au premier élément et retourne
// le premier élement. Si la liste est vide retourne null
public Object first()
{
position=0;
if (size()==0) return(null);
else return(elementAt(0));
}
// Retourne le prochain élément, le parcours est incrémenté
// retourne null si pas de prochain élément
public Object next()
{
if(position>=size()) return(null);
else
{
position++;
Object e = elementAt(position);
return(e);
}
}
// Retourne le prochain élément différent
// retourne null si on arrive en fin de liste sans avoir trouvé
// d'élément différent
public Object nextDifferent()
{
if(position>=size()) return(null);
// On utilise l'interface pour accèder à la méthode générique
// qui détermine si les deux éléments sont différents
VectorParcoursImp o1 = (VectorParcoursImp)elementAt(position);
position++;
while (position<size())
{
VectorParcoursImp o2 = (VectorParcoursImp)elementAt(position);
if (o1.Different(o2))
{
return(elementAt(position));
}
else
position++;
}
return(null);
}
}
// Interface pour tester si deux élements de la liste
// VectorParcours sont différents
public interface VectorParcoursImp
{
public boolean Different(VectorParcoursImp o);
}
PROBLEME
/* ==============================================
FIC : Client.java
============================================== */
package clienttel;
import java.io.*;
import java.lang.*;
import java.util.*;
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.RMISecurityManager;
import servtel.*;
public class Client
{
public static void main(String args[]) throws
RemoteException,IOException,NotBoundException
{
ServeurImp services;
services =
(ServeurImp)Naming.lookup("rmi://"+args[0]+":"+args[1]+"/EXAMEN");
DataInputStream datain=new DataInputStream(System.in);
try
{
while (true)
{
System.out.print("nom: ");System.out.flush();
String nom = datain.readLine();
if (nom.compareTo("")==0) nom=null;
System.out.print("prenom: ");System.out.flush();
String prenom = datain.readLine();
if (prenom.compareTo("")==0) prenom=null;
Contact c = services.getContact(nom,prenom);
if (c!=null) System.out.println(c.numero);
}
}
catch (Exception e)
{
System.out.println("Tchao");
}
services=null;
}
}
/* ==============================================
FIC : ServeurImp.java
============================================== */
package servtel;
import java.io.*;
import java.lang.*;
import java.net.*;
import java.util.*;
import java.rmi.*;
import servtel.*;
public interface ServeurImp extends Remote
{
public Contact getContact(String Nom,String Prenom) throws
RemoteException;
}
/* ==============================================
FIC : Contact.java
============================================== */
package servtel;
import java.io.*;
import java.lang.*;
import java.net.*;
import java.util.*;
import servtel.*;
public class Contact implements Serializable
{
public String nom;
public String prenom;
public String numero;
public Contact(String n,String p,String num)
{
nom = n;
prenom = p;
numero = num;
}
}
/* ==============================================
FIC : Serveur.java
============================================== */
package servtel;
import java.io.*;
import java.lang.*;
import java.net.*;
import java.util.*;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.server.ServerNotActiveException;
import java.rmi.RMISecurityManager;
import servtel.*;
public class Serveur extends UnicastRemoteObject implements ServeurImp
{
public Vector adresses;
public Vector chargerNumeros(String NomFichier)
{
// Chargement par fichier des contacts (non demandée)
return(v);
}
public Serveur() throws
RemoteException,ServerNotActiveException,IOException,ServerException,
AccessException
{
super();
adresses = chargerNumeros("adresses.txt");
}
public Contact getContact(String Nom,String Prenom) throws
RemoteException
{
int i;
for(i=0;i<adresses.size();i++)
{
Contact e=(Contact)(adresses.elementAt(i));
if ( (Nom != null) && (Prenom != null) )
{
if ( (e.nom.compareTo(Nom)==0) &&
(e.prenom.compareTo(Prenom)==0) ) return(e);
}
else
{
if (Nom != null)
if (e.nom.compareTo(Nom)==0) return(e);
if (Prenom != null)
if (e.prenom.compareTo(Prenom)==0) return(e);
}
}
return(null);
}
public static void main(String args[]) throws
RemoteException,ServerNotActiveException,MalformedURLException,IOException,
ServerException, AccessException
{
System.setSecurityManager(new RMISecurityManager());
Serveur serv = new Serveur();
Naming.rebind("rmi://"+args[0]+":"+args[1]+"/EXAMEN",serv);
}
}
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !