Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème de client serveur...

3 réponses
Avatar
marcpirat
salut

j'ai un serveur qui acc=E8pte de multiple client
lorsque je me connecte sur le serveur, ce derniers r=E9agit... mais le
client ne peut plus rien tap=E9

code client
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
import java.io.*;
import java.net.*;

public class Client {
public static void main(String[] args) throws IOException {

Socket kkSocket =3D null;
PrintWriter out =3D null;
BufferedReader in =3D null;

String serverHostname =3D new String ("127.0.0.1");

try {
kkSocket =3D new Socket(serverHostname, 4444);
out =3D new PrintWriter(kkSocket.getOutputStream(), true);
in =3D new BufferedReader(new
InputStreamReader(kkSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Hote inconnue:" + serverHostname);
System.exit(1);
} catch (IOException e) {
System.err.println("Incapable de se connecteur au serveur:"
+ serverHostname);
System.exit(1);
}

BufferedReader stdIn =3D new BufferedReader(new
InputStreamReader(System.in));

System.out.println("client1");

String fromServer;
String fromUser;

while ((fromServer =3D in.readLine()) !=3D null) {
System.out.println("Serveur: " + fromServer);
if (fromServer.equals("Bye."))
break;

fromUser =3D stdIn.readLine();
if (fromUser !=3D null) {
System.out.println("Client: " + fromUser);
out.println(fromUser);
}
}

out.close();
in.close();
stdIn.close();
kkSocket.close();
}
}


code serveur
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
import java.net.*;
import java.io.*;

public class Server {

private int nbRequete=3D0;

public int ajouterRequete(){
return nbRequete++;
}

public int getRequete(){
return nbRequete;
}

public static void main(String[] args) throws IOException {
ServerSocket serverSocket =3D null;
boolean listening=3Dtrue;

Server server =3D new Server();

try {
serverSocket =3D new ServerSocket(4444);
} catch (IOException e) {
System.err.println("Impossible d'=E9couter sur le port:
4444.");
System.exit(-1);
}

while (listening)
new ServerThread(serverSocket.accept(),server).start();
serverSocket.close();
}

}

code des threads
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
import java.net.*;
import java.io.*;

public class ServerThread extends Thread {
private Socket socket =3D null;

private Server server;

public ServerThread(Socket socket,Server server) {
super("ServerThread");
this.socket =3D socket;
this.server =3D server;
}

public void run() {

try {
System.out.println("a l'=E9coute");
PrintWriter out =3D new
PrintWriter(socket.getOutputStream(), true);
BufferedReader in =3D new BufferedReader(new
InputStreamReader(socket.getInputStream()));
System.out.println("a l'=E9coute2");
String inputLine, outputLine;

while ((inputLine =3D in.readLine()) !=3D null)
{
System.out.println ("Serveur: " + inputLine);
server.ajouterRequete();
outputLine=3D inputLine.toUpperCase();
out.println(outputLine+ " Requete: "+
server.getRequete());
if (outputLine.equals("Bye."))
break;
}
out.close();
in.close();
//socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

pourtant je semble bien utilis=E9 correctement PrintWriter,
BufferedReader
une id=E9e?

merci

3 réponses

Avatar
Damien GUERIN
C'est normal, il faut que ton client soit dans un thread... Ton application
principale lance le thread client et voilà !!


a écrit dans le message de news:

salut

j'ai un serveur qui accèpte de multiple client
lorsque je me connecte sur le serveur, ce derniers réagit... mais le
client ne peut plus rien tapé

code client
============= import java.io.*;
import java.net.*;

public class Client {
public static void main(String[] args) throws IOException {

Socket kkSocket = null;
PrintWriter out = null;
BufferedReader in = null;

String serverHostname = new String ("127.0.0.1");

try {
kkSocket = new Socket(serverHostname, 4444);
out = new PrintWriter(kkSocket.getOutputStream(), true);
in = new BufferedReader(new
InputStreamReader(kkSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Hote inconnue:" + serverHostname);
System.exit(1);
} catch (IOException e) {
System.err.println("Incapable de se connecteur au serveur:"
+ serverHostname);
System.exit(1);
}

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

System.out.println("client1");

String fromServer;
String fromUser;

while ((fromServer = in.readLine()) != null) {
System.out.println("Serveur: " + fromServer);
if (fromServer.equals("Bye."))
break;

fromUser = stdIn.readLine();
if (fromUser != null) {
System.out.println("Client: " + fromUser);
out.println(fromUser);
}
}

out.close();
in.close();
stdIn.close();
kkSocket.close();
}
}


code serveur
============ import java.net.*;
import java.io.*;

public class Server {

private int nbRequete=0;

public int ajouterRequete(){
return nbRequete++;
}

public int getRequete(){
return nbRequete;
}

public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
boolean listening=true;

Server server = new Server();

try {
serverSocket = new ServerSocket(4444);
} catch (IOException e) {
System.err.println("Impossible d'écouter sur le port:
4444.");
System.exit(-1);
}

while (listening)
new ServerThread(serverSocket.accept(),server).start();
serverSocket.close();
}

}

code des threads
=============== import java.net.*;
import java.io.*;

public class ServerThread extends Thread {
private Socket socket = null;

private Server server;

public ServerThread(Socket socket,Server server) {
super("ServerThread");
this.socket = socket;
this.server = server;
}

public void run() {

try {
System.out.println("a l'écoute");
PrintWriter out = new
PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
System.out.println("a l'écoute2");
String inputLine, outputLine;

while ((inputLine = in.readLine()) != null)
{
System.out.println ("Serveur: " + inputLine);
server.ajouterRequete();
outputLine= inputLine.toUpperCase();
out.println(outputLine+ " Requete: "+
server.getRequete());
if (outputLine.equals("Bye."))
break;
}
out.close();
in.close();
//socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

pourtant je semble bien utilisé correctement PrintWriter,
BufferedReader
une idée?

merci
Avatar
marcpirat

C'est normal, il faut que ton client soit dans un thread... Ton applicati on
principale lance le thread client et voilà !!




a chaque fois qu'un client se connecte, un nouveau tread est bien
créer
le problème se pose quand même lorsqu'il y a juste un client

Avatar
Damien GUERIN
Dans mon chat multi-client, il était possible d'envoyer des objets complexe,
voici une partie de mon code. ça peut peut-etre t'aider...

client = new Socket(...);
entree = client.getInputStream();
sortie = client.getOutputStream();

ObjectOutputStream e = new ObjectOutputStream(sortie);
e.writeObject(msg);
e.flush();

ObjectInputStream d = new ObjectInputStream(entree);
obj = d.readObject();

A++



a écrit dans le message de news:



C'est normal, il faut que ton client soit dans un thread... Ton
application
principale lance le thread client et voilà !!




a chaque fois qu'un client se connecte, un nouveau tread est bien
créer
le problème se pose quand même lorsqu'il y a juste un client