Socket client-serveur

berth -  
kinou760 Messages postés 1 Statut Membre -
sistaroro

Bonjour ,
j'ai un petit souci. Je souhaite que le serveur puisse récupérer alternativement les éléments produits par le client1 et le client2.J'arrive a récupérer les éléments d'un seul client a la fois en lancant le serveur et ensuite le client.Comment puis-je faire?Merci
Je met mon code.

/*############################Serveur#########################*/
import java.io.*;
import java.net.*;

public class Serveur {
static final int port = 8080;

public static void main(String[] args) throws Exception {
ServerSocket s = new ServerSocket(port);
Socket soc = s.accept();

// Un BufferedReader permet de lire par ligne.
BufferedReader plec1 = new BufferedReader(
new InputStreamReader(soc.getInputStream())
);

ClientC clientc=new ClientC();
clientc.start();

while (true) {
String str1 = plec1.readLine(); // lecture du message
System.out.println("RECU = " + str1); // trace locale

if (str1.equals("FIN")) break;
}
plec1.close();

soc.close();
}
}
/*############################################################################*/

/*########################Client 1################################*/

import java.io.*;
import java.net.*;
/** Le processus client se connecte au site fourni dans la commande
* d'appel en premier argument et utilise le port distant 8080.
*/
public class ClientL {
static final int port = 8080;

public static void main(String[] args)
{

}

public void start() throws Exception
{
char Tab[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
Socket socket = new Socket("127.0.0.1", port);
System.out.println("SOCKET = " + socket);

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

for (int i = 0; i < 26; i++) {
pred.println(Tab[i]); // envoi d'un message
}
System.out.println("FIN"); // message de terminaison
pred.println("FIN") ;
pred.close();
socket.close();

}
}

/*#########################################################################################*/

/*#####################Client 2 ################
import java.io.*;
import java.net.*;
/** Le processus client se connecte au site fourni dans la commande
* d'appel en premier argument et utilise le port distant 8080.
*/
public class ClientC {
static final int port = 8186;

public static void main(String[] args)
{

}

public void start()throws Exception
{

Socket socket = new Socket("127.0.0.1", port);
System.out.println("SOCKET = " + socket);

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

for (int i = 0; i < 26; i++) {
pred.println(i); // envoi d'un message
}
System.out.println("FIN"); // message de terminaison
pred.println("FIN") ;
pred.close();
socket.close();
}
}

/*########################################################*/
A voir également:

5 réponses

Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
Je ne comprends pas bien ce que tu veux faire.
En plus tu lance le client depuis le serveur. C'est.... déroutant.
Si tu veux recevoir alternativement les messages de 2 clients, il faut attendre la connexion d'un premier client, attendre qu'il t'envoie un message, le récupérer. Ensuite, il faut attendre la demande de connexion du deuxième client.
Si tu veux conserver l'alternance, il ne faut pas faire de thread sinon tu risque d'avoir des receptions dans le désordre.
0
berth
 
Désolé j'avais modifié mes classes pour tester.Je renvoie.
En fait j'arrive a envoyer les éléments d'un seul client en même temps et j'aimerais savoir comment envoyer les 2 alternativement.Merci de ta réponse.


/*############################Serveur#########################*/
import java.io.*;
import java.net.*;

public class Serveur {
static final int port = 8080;





public static void main(String[] args) throws Exception {
ServerSocket s = new ServerSocket(port);
Socket soc = s.accept();

// Un BufferedReader permet de lire par ligne.
BufferedReader plec1 = new BufferedReader(
new InputStreamReader(soc.getInputStream())
);


while (true) {
String str1 = plec1.readLine(); // lecture du message
System.out.println("RECU = " + str1); // trace locale

if (str1.equals("FIN")) break;
}
plec1.close();

soc.close();
}
}
/*############################################################################*/


/*########################Client 1################################*/

import java.io.*;
import java.net.*;
/** Le processus client se connecte au site fourni dans la commande
* d'appel en premier argument et utilise le port distant 8080.
*/
public class ClientL {
static final int port = 8080;

public static void main(String[] args)
{
char Tab[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
Socket socket = new Socket("127.0.0.1", port);
System.out.println("SOCKET = " + socket);

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


for (int i = 0; i < 26; i++) {
pred.println(Tab[i]); // envoi d'un message
}
System.out.println("FIN"); // message de terminaison
pred.println("FIN") ;
pred.close();
socket.close();

}

}




/*#########################################################################################*/

/*#####################Client 2 ################
import java.io.*;
import java.net.*;
/** Le processus client se connecte au site fourni dans la commande
* d'appel en premier argument et utilise le port distant 8080.
*/
public class ClientC {
static final int port = 8186;

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

Socket socket = new Socket("127.0.0.1", port);
System.out.println("SOCKET = " + socket);

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


for (int i = 0; i < 26; i++) {
pred.println(i); // envoi d'un message
}
System.out.println("FIN"); // message de terminaison
pred.println("FIN") ;
pred.close();
socket.close();
}

}


/*########################################################*/
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Il faut créer un deuxième socket dans le serveur.
En plus, tu utilise un autre port dans client2 !
0
berth
 
oui je me suis trompée.Le port c'est 8080 pour les deux clients.Mais je crée un nouveau socket dans le serveur.Faut il aussi créer un nouveau Serversocket?
0
berth
 
Autre chose que je n'ai pas comprise.Comment lancer les 2 clients en meme temps?
0
berth
 
C'est bon.J'ai compris.Merci de ton aide
0

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

Posez votre question
kinou760 Messages postés 1 Statut Membre
 
j ai 1 pbl dans le socket client ,le host es qu il est toujours 127.0.0.1
sinon si en veut connecté un serveur situer dans une différente machine quel es la valeur du host . sa sera un plaisir à moi de me répendre merci
0