SpaceHam
Messages postés78Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention22 octobre 2015
-
6 déc. 2010 à 04:29
SpaceHam
Messages postés78Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention22 octobre 2015
-
7 déc. 2010 à 01:56
Bonjour,
J'essaie de créer un client-serveur simple. Beaucoup d'exemple ont été sortie pour une applicationd de chat multiple. Je me suis bassé la dessus afin de construire ma propre application. En gros j'ai un JTextField pour entrer le message et un JTextArea pour entrer l'information de tous les usagers dont soie-même.
L'application me sort un IOException lorsqu'il arrive sur le .readLine() d'un BufferedReader (new InputStreamReader(s.getInputStream())). En gros j'ai bien spécifier que le texte devrais être pris de mon JTextField mais lorsque je veux l'envoyer seulement et non pas avant mais bon on dirait que ça opère immédiatement dès la première connexion et ainsi je suis déconnecté automatiquement.
Voici mes sources
-------------------------------------------------------------------
Ecouteur.java (arrête a la ligne 'ligne = entree.readLine();'
class Ecouteur extends Thread
{
BufferedReader entree;
private CPrincLC cc = null;
public Ecouteur(Socket s, CPrincLC cont) throws IOException
{
cc = cont;
entree = new BufferedReader (new InputStreamReader(s.getInputStream()));
this.start();
}
public void run()
{
cc.putTextMsg("run()");
String ligne = "";
cc.putTextMsg("ligne : ");
try
{
cc.putTextMsg("try");
while (true)
{
cc.putTextMsg("while(true)");
System.out.println("ligne empty : "+ligne);
System.out.println("entree : "+entree);
//Application cause erreur() sur la ligne suivante.
ligne = entree.readLine();
cc.putTextMsg("while : "+ligne);
if (ligne==null)
break;
cc.putTextMsg("\n"+ligne);
}
}
catch (IOException e)
{
cc.putTextMsg(e.toString());
}
finally
{
cc.putTextMsg("connexion interrompue par le serveur");
}
}
}
public class ClientLC
{
private CPrincLC cc = null;
public PrintStream canalEcriture;
protected String adr = "localhost";
protected static final int PORT = 8803;
public ClientLC(CPrincLC cont)
{
cc = cont;
Socket s=null;
if (adr.length() == 0)
erreur();
try
{
s = new Socket(adr, PORT);
canalEcriture = new PrintStream(s.getOutputStream());
System.out.println("PrintStream pass!");
Ecouteur ecouteur = new Ecouteur(s, cc);
System.out.println("ecouteur create");
} // try
catch (IOException e)
{
System.err.println(e);
}
finally
{
try
{
if (s!=null)
s.close();
}
catch (IOException e2)
{}
}
} // main
public static void erreur()
{
System.err.println("Usage: java Client <hostname>");
System.exit(1);
}
}