|
Socket avec données binaires |
Iniciado por Mouhi, 16,nov. 2018 00:44 - 4 respuestas |
| |
| | | |
|
| |
Miembro registrado 81 mensajes Popularité : +7 (7 votes) |
|
Publicado el 16,noviembre 2018 - 00:44 |
Bonjour,
J'ai un appareil qui m'envoie des données binaires, mais je n'arrive pas à les afficher en Hexadécimal,
Voici mon code :
LOOP IF SocketWaitForConnection("PrincipalSocket") THEN bufCanal is Buffer = SocketAccepte("PrincipalSocket") Trace("Connexion Requested by : "+bufCanal) bufMsg is Buffer = SocketLit(bufCanal,Faux,10000) FOR i = 1 _TO_ Taille(bufMsg) Trace(Val(bufMsg[[i]],"x") + " ") END END END
Le premier trace se déclenche mais pas la boucle (mon Buffer est vide), Pourtant quand j'utilise l'outil Hercules pour tester l’appareil je reçois correctement des données binaires, Quelqu'un a une idée ?
Merci d'avance, |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 948 mensajes Popularité : +30 (92 votes) |
|
Publicado el 16,noviembre 2018 - 10:26 |
Coucou,
SocketLit :
TANTQUE SocketExiste("MonSocket") = Vrai sMsg est une chaîne = SocketLit("MonSocket", Vrai) SI sMsg <> "" ALORS ListeAjoute(LISTE_Messages, Maintenant() + " " + sMsg) FIN FIN Reference: https://doc.pcsoft.fr/fr-FR/?3070014&name=socketlit_fonction
BufferVersHexa :
s est une chaîne UNICODE = "abdcefghijkl" Trace(BufferVersHexa(s))
Reference: http://doc.pcsoft.fr/?1000019916&verdisp=200
WLTips: Composants (WINDEV) : WD Trace Socket -- In üs we trust - #92i - #LaPiraterieNestJamaisFinieMensaje modificado, 16,noviembre 2018 - 10:29 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 81 mensajes Popularité : +7 (7 votes) |
|
Publicado el 17,noviembre 2018 - 02:31 |
Salut
Pfff, je galère toujours avec mon problème
Merci Charly, j'ai déjà essayé BufferVersHexa, même sans conversion en Hexa il est sensé afficher quelques chose (du charabia de la suite binaire) mais tout a fait vide, je viens d'installer Wireshark pour analyser un peu le traffic réseau, et voilà mon constat : Je reçois un premier paquet d'initialisation (paquet SYN) de mon appareil (traceur GPS), puis le programme envoie un ACK SYN (c'est logique), puis le traceur envoie ACK (c'est logique), jusqu'ici aucun souci avec l'initialisation de la connexion TCP entre le client et le serveur.
Une fois l'initialisation est terminée le traceur envoie un paquet avec des données, ex IMEI, ...etc. (voir l'image, length=17).
Très vite un ACK est envoyé (length=0) avant même l'exécution de la fonction SocketAccepte(), donc lorsque j'essaye de lire les données (ex : IMEI reçues dans le paquet précédent) bein je trouve zéro length (aucune donnée) c'est surement à cause du dernier ACK envoyé avant que je lis les données du canal I/O.
Voilà mon code rien de spécial :
BOUCLE SI SocketAttendConnexion("Socket") ALORS FIN FIN
Comme vous pouvez le voir, les 2 lignes en commentaires, et voilà le resultat Wireshark :
C'est étrange n'est-ce pas ? ou quelque chose m'échappe ?
Merci pour votre aide,Mensaje modificado, 17,noviembre 2018 - 02:32 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 12 mensajes |
|
Publicado el 22,noviembre 2018 - 20:37 |
Salut, essai de jouer avec les SocketOption et le mode de transmission. exemple Socket.Option=SocketNagleOff SocketChangeModeTransmission(gsNom_du_socket,SocketSansMarqueurFin)
j'ai eu le même genre de problème a communiquer avec un automate programmble. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 81 mensajes Popularité : +7 (7 votes) |
|
Publicado el 23,noviembre 2018 - 23:10 |
Salut
Effectivement c'est à cause du mode de transmission,
C'est en ordre maintenant
Merci.... |
| |
| |
| | | |
|
| | | | |
| | |
|