[Débutant] ServerSocket attend trop longtemps
Bonjours, c'est ma première tentative client-serveur et mon premier test ne fonctionne pas du tout...
Premièrement, le client (le strict minimum):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public static void main(String[] args) {
try{
Socket client = new Socket("127.0.0.1", 6666);
ObjectOutputStream streamOut = new ObjectOutputStream(new DataOutputStream(new BufferedOutputStream(client.getOutputStream())));
ObjectInputStream streamIn = new ObjectInputStream(new DataInputStream(client.getInputStream()));
streamOut.writeUTF("HEY CA MARCHE!!!!");
streamOut.writeUTF("Ca Marche encore!!");
streamOut.writeUTF("Ca Marche encore et toujours!!!!");
}catch(Exception e){
System.out.println(e.getMessage());
}
} |
et puis le serveur (le strict minimum):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public static Vector clients;
public static ServerSocket server;
public static boolean fin = false;
public static void main(String[] args) {
Socket client = null;
clients = new Vector();
try{
server = new ServerSocket(6666);
server.setSoTimeout(1000);
}catch(Exception ioe){
System.out.println(ioe.getMessage());
}
while(!fin){
try{
client = server.accept();
}catch(IOException exc){
System.out.println("Attente...");
}
if(client != null){
clients.add(new CommunicationClient(client));
client = null;
}
}
} |
Mon problème est le suivant. Le serveur s'arrête sur client = serveur.accept(); comme prévu. Parcontre, quand le client arrive à Socket client = new Socket("127.0.0.1", 6666);, le serveur ne recoit toujours pas sa connection! Le client continue donc son code et envoie son texte dans le vide. Une fois le code du client terminé (le client est donc fermé) le serveur continue finalement sur la ligne suivante, qui ajoute le client dans sa liste. Malheureusement, à se moment il est trop tard car le client est déjà fermé. Pourquoi le serveur ne voit-il pas le client quand celui-ci créé son Socket?