Hello les gens,
Un serveur envoi un flux de données en tcp sur un port défini pendant une période définie (de telle heure à telle heure)
Le serveur est un relais, le flux n'est donc pas "continu", il est prévisible que le serveur s’arrête d'envoyer des données parce que lui même n'en reçoit plus, puis reprends son envoi dès qu'il commence à en recevoir.
Le but pour moi est de développer un sorte de client qui retranscrit ce flux en messages. Les messages sont caractérisés par des caractères "début de message", disons "D" et fin de message: "F". Mon programme doit donc écouter en permanence jusqu’à ce qu'il détecte une séquence "DcontenudemonmessagereçuF" faire un traitement dessus mais tout en continuant son écoute pour les éventuels messages suivants. Voila pour la théorie.
J'ai commencé un petit tuto avec le code:
1- Je remarque que ce code n'affiche que la première ligne de ce qu'envoi le serveur (dont le code n'est pas très important ici)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35 public final class ClientQuiCommunique { public ClientQuiCommunique() { // TODO Auto-generated constructor stub } public static void main(String[] args) { Socket socket; BufferedReader in; try { socket = new Socket(InetAddress.getLocalHost(), 2009); System.out.println("Demande de connexion"); in = new BufferedReader(new InputStreamReader( socket.getInputStream())); String message_distant = in.readLine(); System.out.println(message_distant); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
2- Par ailleurs je n'arrive pas à imaginer la condition d’arrêt de la boucle qui exécutera ce code pour à la fois écouter en permanence tout en traitant la séquence dès qu'identifiée comme tel.
Merci pour toutes vos contributions.
Partager