Client serveur avec Netbeans en Java

Fermé
Diouf - 26 nov. 2011 à 13:27
KX Messages postés 16601 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 3 octobre 2022 - 26 nov. 2011 à 16:00
Bonjour,

J'ai ppour préoccupation de maîtriser les manip d'architecture client serveur en Java, qui m'aidera dans un projet académique. En fait, j'ai crée comme 2 projets différents:
- un client: qui se connecte au serveur et lui transmet une chaine de caractères
-Le serveur: qui devr recevoir cette chaine et l'afficher.

Les deux sont dans deux projets Java différents crées sur Netbeans, et tester mon code pose problème, car je ne sais comment m'y prendre.
J'ai lancé chacun des 2 dans 2 instances différentes de l'invite windows. Mais j'ai des erreurs. Comment faire alors?

J'aimerai arriver à faire aussi connecter mon Phone à un réseau wifi créé sur mon laptop, et faire communiquer les 2. Esct-ce possible? Si oui comment faire?
C'est ce qui m'a poussé vers les socket.

Merci pour votre secours.

1 réponse

KX Messages postés 16601 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 3 octobre 2022 2 975
26 nov. 2011 à 14:05
Ça dépend quelles sont les erreurs... Un point important : il faut lancer le serveur avant le client. Par contre il est surement plus simple de faire un code propre si les deux parties sont développées dans le même projet, ça te permet d'utiliser des méthodes communes, comme par exemple ici où j'envoie tout un fichier du client au serveur.

En ce qui concerne le réseau, qu'il soit WiFi, ou non, ça ne change rien, ce n'est pas à toi de t'en occuper. Lorsque tu donnes l'adresse IP du serveur et du client, peu importe le type de l'infrastructure réseau nécessaire pour relier les deux.

Par contre la programmation pour mobile est différente de la programmation de bureau, et là ça risque de poser problème...
1
STP, je saisis mon code, et comment ke l'exécute? Bien sûr je lance le serveur en premier.
Par exemple, voici mes deux projets qui doivent communiquer:

1- TestReseauTCPclient : Elle contient la classe du code client

public class ClientConnecte {
Socket sock = null;

public ClientConnecte(String host, int port, String data){
try{
sock = new Socket(host,port);
PrintStream output = new PrintStream(sock.getOutputStream());
output.println(data);
sock.close();
}catch(IOException e){}
}

public static void main(String[] args){
System.out.println("Le Client que je suis se connecte ...");
ClientConnecte client = new ClientConnecte("127.0.0.1", 10000, "Hello World");
System.out.println("Le client que je suis se deconnecte ...");
}
}

2- TestReseauTCP: elle contient les 3 classes ds 3 fichiers differents côté serveur

----------------------la premiere qui implement la partie à exécuter pr une connexion acceptée-----

public class Traitement extends Thread {
Socket sock;
BufferedReader entree;

public Traitement(Socket socket){
sock = socket;
try{
entree = new BufferedReader(new InputStreamReader(sock.getInputStream()));
}catch(IOException e){}
this.start();
}

public void run(){
String text;
try{
text = entree.readLine();
System.out.println(text);
sock.close();
}catch(IOException e){}
}
}

------------------------- La seconde qui lance une instance du serveur -----------------------
public class TestServeurConnecte {
public static void main(String[] args){
System.out.println("Le Seveur que je suis s'initialise en boucle...");
new ServeurConnecte();
System.out.println("Le serveur que je suis s'est arrete.");
}
}

--------------------------- Et enfin une troisième qui implémente la boucle du serveur acceptant les connexions des potentiels clients --------------------------------------------------------------------

public class ServeurConnecte extends Thread{
ServerSocket reception;
static final int port = 10000;

public void ServerConnecte(){
try{
reception = new ServerSocket(port);
System.out.println("Bonne creation du serveur ... OK");
}catch(IOException e){
System.out.println("Erreur lors de la tentative d'initialisation");
System.exit(1);
}
System.out.println("Avant le start");
this.start();
}

public void run(){
Socket sock;
Traitement t;
try{
while(true){
System.out.println("Debut de boucle");
sock = reception.accept();
t = new Traitement(sock);
System.out.println("Fin de la boucle");
}
}catch(IOException e){System.out.println("Erreur de boucle");}
}
}


Comment les lancer? Je ne sais comment procéder.
Merci pour ta promptitude et ton aide.
0
KX Messages postés 16601 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 3 octobre 2022 2 975
26 nov. 2011 à 16:00
Pour les lancer rien de très compliqué, tu compiles et tu lances les classes qui ont un main, c'est à dire TestServeurConnecte, et ClientConnecte.

Mais tu as des erreurs à corriger :

* Il ne faut pas que tu oublies de démarrer tes threads avec start(), sinon ça ne sers à rien.
* Il vaut mieux que tu transforme ta méthode ServerConnecte en constructeur ServeurConnecte

Ensuite il y a d'autres erreurs qui s'affichent, mais ton premier HelloWorld arrive bien sur le serveur, alors c'est un bon début, je te laisse continuer la suite...
0