|
Socket avec données binaires |
Iniciado por Mouhi, nov., 16 2018 12:44 AM - 4 respostas |
| |
| | | |
|
| |
Membro registado 81 mensagems Popularité : +7 (7 votes) |
|
Publicado em novembro, 16 2018 - 12:44 AM |
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, |
| |
| |
| | | |
|
| | |
| |
Membro registado 948 mensagems Popularité : +30 (92 votes) |
|
Publicado em novembro, 16 2018 - 10:26 AM |
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 - #LaPiraterieNestJamaisFinieMensagem modificada, novembro, 16 2018 - 10:29 AM |
| |
| |
| | | |
|
| | |
| |
Membro registado 81 mensagems Popularité : +7 (7 votes) |
|
Publicado em novembro, 17 2018 - 2:31 AM |
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,Mensagem modificada, novembro, 17 2018 - 2:32 AM |
| |
| |
| | | |
|
| | |
| |
Membro registado 12 mensagems |
|
Publicado em novembro, 22 2018 - 8:37 PM |
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. |
| |
| |
| | | |
|
| | |
| |
Membro registado 81 mensagems Popularité : +7 (7 votes) |
|
Publicado em novembro, 23 2018 - 11:10 PM |
Salut
Effectivement c'est à cause du mode de transmission,
C'est en ordre maintenant
Merci.... |
| |
| |
| | | |
|
| | | | |
| | |
|