Rechercher : dans
Par :

[Java] Client - serveur, reprise déconnection

mike220684, le 5 mar 2007 à 18:27:42 
 Signaler ce message aux modérateurs

Bonjour.

Dans une application java client-server, un seul et unique client se connecte sur deux liens (sockets) au seul et unique serveur.

Si le serveur tombe je voudrai que le client attende qu'il redémarre et se reconnecte une fois redémarrer afin qu'il continue d'envoyer des messages.

Si le client tombe je voudrais que le serveur soit capable de l'accueillir de nouveau.

Je suis en train de galérer avec les exceptions du genre voir ci-dessous (pour le client). Ce code en gros écoute et lit en permanence ce qui arrive par l'une des deux sockets. Si on ne peut pas lire ce qui arrive, alors je considère le client déconnecté, je ferme sa socket et j'attends de la rouvrir dès que le serveur m'aura fait signe. Mais ça ne marche pas. Quand le serveur refait signe j'ai une 30aines de "Connection lost on port" puis régulièrement "No server is listening", alors qu'il est lancé.

Quelqu'un peut m'aider ?

Mon code :

public void run() {
boolean connected = true;
// Reading all incoming data
while (true) {
try {
while (true) {
// Reading incoming data on transferLink and printing it
String lecture;
while ((lecture = in.readLine()) != null) {
System.out.println(lecture);
}
}
} catch (SocketException e) {
System.err.println("ReceiveFile: connection lost on port "
+ sReceiveFile.getPort());
connected = false;
} catch (IOException e) {
System.err.println("ReceiveFile: Impossible to read from port "
+ sReceiveFile.getPort());
} finally {
try {
sReceiveFile.close();
while (!connected) {
sReceiveFile = new Socket("127.0.0.1", 8562);
connected=true;
}
} catch (ConnectException e) {
System.err.println("ReceiveFile: No serveur is listening. Retrying...");
try {
Thread.sleep(8000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

Configuration: Windows XP
Firefox 2.0.0.2

Meilleures réponses pour « [Java] Client serveur, reprise déconnection » dans :
Processus de Windows VoirVous vous demandez certainement quels sont tous ces horribles processus qui tournent quand vous ouvrez le gestionnaire des tâches... Ici, une tentative d'explication : Csrss.exe Csrss signifie Client Server Run-time Subsystem. C'est un sous...
Environnement Client/Serveur VoirPrésentation de l'architecture d'un système client/serveur De nombreuses applications fonctionnent selon un environnement client/serveur, cela signifie que des machines clientes (des machines faisant partie du réseau) contactent un serveur, une...
Réseaux - Architecture client/serveur à 3 niveaux VoirPrésentation de l'architecture à 2 niveaux L'architecture à deux niveaux (aussi appelée architecture 2-tier, tier signifiant rangée en anglais) caractérise les systèmes clients/serveurs pour lesquels le client demande une ressource et le serveur la...