Bon commencer puisque c'est supposé être over easy les sockets en Java
!call squalyl
Bon alors je suis en train de regarder comment fonctionne le dialogue entre un client et un serveur et de recoder le protocole côté client. DOnc pour ça je fais des tests avec mon client existant, je regarde ce qui se dit avec Wireshark, et je fais pareil avec mon client Java.
Le problème que j'ai à l'heure actuelle c'est que les mecs qui ont dévellopé ça n'ont pas suivi les 2 grandes façons de faire un petit protocole :
- La première solution consiste en règle générale à envoyer la taille du paquet en premier, comme ça on sait à quoi s'attendre. Ils l'ont pas fait.
- La seconde solution c'est de mettre un caractère ou une séquence qui finit le message. Ils l'ont pas fait non plus. (pas même un \n ...)
Du coup la question est "comment font ils" ? A priori en matant les entêtes IP et TCP c'est possible d'en déduire quelle sera la taille à lire, mais là pour le coup je sais pas faire. Wireshark me dit bien gentillement qu'il a trouvé tout seul combien de bytes sont en jeu (avec un sublime "Bytes in flight").
Bref :
1/ Vous avez déjà vu des protocoles qui fonctionnent comme ça ?
2/ Vous auriez pas des idées tordues de comment ça pourrait fonctionner en fait ?
3/ Vous savez comment on trifouille les packets en aussi bas niveau que Wireshark avec Java ?
4/ Vous avez une super bonne idée qui me permette de contourner le problème ? Mon read() sur le InputStream attend misérablement une nouvelle info et je sais pas comment lui dire que c'est bon, tout est sous contrôle.
Et à priori ils font ça pour les envoi de commande ET pour les envoi de fichiers :/