Bien l'bonjour à vous,
Je me pose de sérieurses questions métaphysique sur la programmation réseau en Java avec les Sockets.
Je me suis crée une petite maquette sous Eclipse pour valider chaque partie de mon application avant assemblage final.
Et là je suis sur la validation de la brique de base : La communication entre mon client (Tablet Sony sous Android) et mon serveur (Tvix Xroid - Disque dur Media Player sous Android).
1 - Le client demande (envoi d'un message) au serveur de lui transmettre un fichier (fichier XML). Si ce fichier n'est pas encore prêt, alors le serveur le signale au client, et le client retente une nouvelle requête ultérieurement.
2 - Le client envoi au serveur une structure de données constituée comme suit (Je choisi d'envoyer un objet) :
- Deux variables String
- Une variable Boolean
- Un tableau de Long
3 - Ensuite, le client envoi au serveur une information qui peut prendre plusieurs valeurs prédéfinie (Je choisi d'envoyer un Enum)
4 - Enfin le client demande au serveur (périodiquement) de lui retourner une structure de donnée permettant au client de mettre à jour son IHM (Je choisi d'envoyer un objet) :
- Une variable String
- Une variable Boolean
- Une variable Long
Mes questions :
- J'ai choisi d'établir chacun des 4 échanges à travers 4 Thread, et donc 4 objets de type java.net.Socket. Est-ce la bonne stratégie ?
- Le codage de ce mécanisme devient un vrai casse-tête. Je galère dans la synchronisation des envoi/réception de données. J'ai l'impression que le package java.nio (que je suis en train de découvrir) serait la soluce à ma problématique. Quels sont les avantages de ServerSocket par rapport à ServerSocketChannel ?
- Existe-t'il un moyen de connaître le type d'objet véhiculé dans un Socket ? L'idée serait de générer un seul Socket d'échange qui accepte tout format de données. A la lecture du format de la donnée (une structure de donnée, un Enum ou un fichier), je choisi un action adaptée du côté de celui qui recoit l'information.
J'attend impatiemment vos lumières, car pour l'instant mon projet (voir détail ici) est bloqué...choix stratégique oblige![]()








Répondre avec citation







Partager