Programmation cilent\serveur

rimmtic Messages postés 13 Statut Membre -  
rimmtic Messages postés 13 Statut Membre -
Bonjour,


j'attend la repense
A voir également:

5 réponses

dj-postka Messages postés 2409 Statut Membre 303
 
La "Réponse" à quoi? si tu posais une question, ce serrai mieux tu ne crois pas?

Parce que programmation client/serveur, seul, ça ne veux rien dire.
0
rimmtic Messages postés 13 Statut Membre
 
j'ai la poser deja
0
rimmtic Messages postés 13 Statut Membre
 
1) Écrire un programme qui rendra le service suivant :
* Afficher un message de bienvenue ;
* demander une phrase ;
* convertir cette phrase en majuscule (méthode toUpperCase() de la classe String ) ;
* recommencer si cette cette phrase est différente de « bye ».
On testera ce programme par telnet. Telnet permet de se connecter à distance sur une autre machine. Mais en fait, c'est
un programme qui ne fait qu'envoyer sur le réseau ce qui est frappé au clavier et affiche à l'écran ce qu'il reçoit. Tout
le travail d'interprétation des commandes est fait à distance sur le serveur. Par défaut telnet se connecte au port 23.
Pour se connecter à un autre port : telnet 192.168.29.X no_port
2) Écrire maintenant un programme ressemblant à Telnet. Ce programme sera lancé sur le PC. Pour interroger le
clavier on construira un BufferedReader à partir du flux Sytem.in.
3) Essayez de vous connecter aux programmes de vos camarades.
4) Les programmes précédents ont un défaut. Ils ne permettent pas à plusieurs clients de se connecter. Reprendre le
programme serveur de majuscule et le rendre « multi-client ».
2. Serveur
merci d'avance
0
le père
 
Bonjour

Un début de réponse ici :
http://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm
0
rimmtic Messages postés 13 Statut Membre
 
mport java.util.Scanner;

public class pgm
{

public static void main(String[] args)
{

System.out.println(" Bienvenue ");
Scanner s = new Scanner(System.in);
System.out.print("Entrez une phrase SVP ");
int i=0;
while (i==0){
String p = s.nextLine();

if(!(p.equals("Au revoir"))){
String PHMA = p.toUpperCase();
System.out.println(""+PHMA);
}
else{
i=1;
}
}
}
}
j'ai fais ça
0
rimmtic Messages postés 13 Statut Membre
 
On testera ce pgm par telnet (j'ai aucune idée comment réaliser ça
0
rimmtic Messages postés 13 Statut Membre
 
bonjour
en faite j'ai réussi de réaliser ça mais uniquement pour une seule fois que le client envoie une phrase au serveur qui la convertit en maj et ensuite le client la récupère et l'affiche(c.a.d une seule phrase) où je dois faire la boucle au niveau du client ou du serveur?
voici le code du serveur :
import java.io.*;
import java.net.*;

class ServeurTCP_TP1 {

public static void main(String argv[]) throws Exception
{
String phraseClient;
String phraseMajuscule;

ServerSocket socketEcoute = new ServerSocket(4567);

while(true) { // boucle infinie

Socket socketConnexion = socketEcoute.accept();
BufferedReader entreeDepuisClient = new BufferedReader(new
InputStreamReader(socketConnexion.getInputStream()));
PrintWriter sortieVersClient =
new PrintWriter(socketConnexion.getOutputStream(),true);
phraseClient = entreeDepuisClient.readLine();
phraseMajuscule = phraseClient.toUpperCase();
sortieVersClient.println(phraseMajuscule);

} // fin boucle (repartir et attendre une nouvelle connexion)
}
}
et le pgm du client
import java.io.*;
import java.net.*;
class ClientTCP_TP1 {

public static void main(String argv[]) throws Exception
{
String phrase;
String phraseModifiee;

BufferedReader entreeDepuisUtilisateur = new BufferedReader(new InputStreamReader(System.in));

Socket socketClient = new Socket("localhost", 4567);


PrintWriter sortieVersServeur = new PrintWriter(socketClient.getOutputStream(),true);
BufferedReader entreeDepuisServeur = new BufferedReader(new InputStreamReader(socketClient.getInputStream()));

phrase = entreeDepuisUtilisateur.readLine();

sortieVersServeur.println(phrase);


phraseModifiee = entreeDepuisServeur.readLine();

System.out.println("RECU DU SERVEUR: " + phraseModifiee);

entreeDepuisUtilisateur.close();
entreeDepuisServeur.close();
sortieVersServeur.close();
socketClient.close();

}
}
j'ai pas réussi à créer la boucle qui me permet d'entrer chaque fois une phrase depuis le client et chaque fois le serveur la convertit en majuscule jusqu'à ce que ce dernier"le serveur" trouve la chaine "au revoir" il s'arrête
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
C'est ta boucle principale qui ne va pas :
while(true) { // boucle infinie

Socket socketConnexion = socketEcoute.accept();
BufferedReader entreeDepuisClient = new BufferedReader(new
InputStreamReader(socketConnexion.getInputStream()));
PrintWriter sortieVersClient =
new PrintWriter(socketConnexion.getOutputStream(),true);
phraseClient = entreeDepuisClient.readLine();
phraseMajuscule = phraseClient.toUpperCase();
sortieVersClient.println(phraseMajuscule);

} // fin boucle (repartir et attendre une nouvelle connexion) 
il manque une boucle et le message de bienvenue :
while(true) { // boucle infinie

Socket socketConnexion = socketEcoute.accept();
BufferedReader entreeDepuisClient = new BufferedReader(new
InputStreamReader(socketConnexion.getInputStream()));
PrintWriter sortieVersClient =
new PrintWriter(socketConnexion.getOutputStream(),true);
sortieVersClient.println("Bienvenue\r\nentrez un mot ou une phrase\r\n");
while(phraseMajuscule!="BYE")
{
    phraseClient = entreeDepuisClient.readLine();
    phraseMajuscule = phraseClient.toUpperCase();
    sortieVersClient.println(phraseMajuscule);
}
socketConnexion.close();
} // fin boucle (repartir et attendre une nouvelle connexion) 
Avant de faire le client, fait déjà fonctionner ton serveur avec Telnet.
indice pour le 4) : met le while (...!=BYE) dans une fonction et appele là avec un thread détaché.
0
rimmtic Messages postés 13 Statut Membre
 
import java.net.*;
import java.io.*;
import java.util.Scanner;
//import com.sun.org.apache.xalan.internal.xsltc.compiler.Patte

public class ServeurTCP {

static final int port = 23;

public static void main (String [] args)throws Exception{
while (true){

ServerSocket serverSocket = new ServerSocket(port,23);
System.out.println("Le serveur "+ serverSocket+"est démarré " );
System.out.println("En attente d'un Client ...");
try{

Socket socket = serverSocket.accept();
try{

System.out.println("Connexion acceptée " + socket);

BufferedReader in = new BufferedReader(
new InputStreamReader(
socket.getInputStream())
);

PrintWriter out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())), true);



System.out.println("bienvenue");
String phrase=new String();
String phrase1=new String();


Scanner sc=new Scanner(System.in);
while (phrase!="bye")
{
System.out.println("Saisissez une phrase:");
phrase=sc.nextLine();
phrase1=phrase.toUpperCase();
System.out.println(phrase1);


phrase=sc.nextLine();
}




}finally{

System.out.println("closing...");
socket.close();
System.out.println("Redemarrage du serveur...");
}
}finally{

serverSocket.close();
}}
}
}

BEN j'ai fais la boucle mai aucun modification il juste convertie l msg
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Je ne comprend rien à ce que tu fais. Tu n'as pas besoin de remettre toutes les options du serveur à chaque deconnexion de client. Et pourquoi utiliser System.out pour tes sortie qui devraient être sur le socket ?
compare phrase1 avec "BYE", comme ça tu sortira sur plus d'entrées utilisateur (bye, BYE,Bye...).
Ta version précédente était mieux, juste la boucle while à modifier comme je te l'ai dis.
0
rimmtic Messages postés 13 Statut Membre
 
merci pour tes remarque et pour telent c t'as qlq idée
0
rimmtic Messages postés 13 Statut Membre
 
j'ai besoins de qlq idée sur mulit client
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
je te l'ai dit pour le multi client, il faut faire une fonction englobant la boucle while et appelé celle ci dans un thread séparé.
Fait déjàç la fonction.
0