Probleme socket multiClient

cs_nemata Messages postés 12 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 mars 2009 - 23 mars 2009 à 13:48
cs_nemata Messages postés 12 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 mars 2009 - 23 mars 2009 à 22:30

2 réponses

cs_nemata Messages postés 12 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 mars 2009
23 mars 2009 à 13:49
Bonjour j'essaie de réaliser un tchat en java, soit un serveur qui écoute et lorsque un client parle envois des données a tout les clients connecté, mais cela ne marche pas,
je vais vous présenter mon code :

Serveur qui se tourne dans un thread:

public void run(){
try {
serverSocket = new ServerSocket(port);
System.out.println(serverSocket);
while(true)
{
//Wait data clients
clientSocket = serverSocket.accept();
String hostName = clientSocket.getInetAddress().getHostAddress();

clients.put(hostName, clientSocket);
System.out.println(clients);

for(Socket sock : clients.values())
{
InputStream in = sock.getInputStream();
OutputStream out = sock.getOutputStream();
ObjectInputStream input = new ObjectInputStream(in);
ObjectOutputStream output = new ObjectOutputStream(out);

try {
System.out.println(input.readObject());
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
output.writeObject("envois");

}

}
} catch (IOException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}

Et le client tout simple :

try
{
socket = new Socket(ip, port);
OutputStream output = socket.getOutputStream();
InputStream input = socket.getInputStream();

ObjectOutputStream out = new ObjectOutputStream(output);
ObjectInputStream in = new ObjectInputStream(input);

out.writeObject("toto");

try {
System.out.println(in.readObject());

} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}

} catch (IOException e) {
e.printStackTrace();
System.exit(0);
}
}


lorsqu'il y a un client qui parle cela marche tres bien j'envois et recois les données, mais quand un 2eme ce connecte, lui recois les données et le programme plante, je pense qu'il attend que l'autre clients lui envoie des données pour pouvoir lui envoyer ou quelque chose comme sa.

Es-ce que je dois crée une methiode dasn un thread qui attend que le serveur contact le client dans mon client?

ou alors peut être que ce n'est pas possible et qu'il faut que mon client fasse des requete toutes les "n" ms pour rechercher les nouvelles données mais j'en doute.

Voila j'espere avoir été clair et attend vos réponse avec impatience, cordialement;

ps : imporssible de trouver sur le net des tutos pour envoyez des donnée a plusieur clients.
0
cs_nemata Messages postés 12 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 mars 2009
23 mars 2009 à 22:30
up
0
Rejoignez-nous