[..] Grandes données TCP
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- jchd
- AutoIt MVPs (MVP)
- Messages : 2282
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Grandes données TCP
Quite à choisir un caractère marqueur, autant en prendre un parmi les plus adequats : U+FFFE est garanti invalide en UCS-2 (encodage employé par AutoIt, sous-ensemble de UTF-16).
On est donc raisonnablement sûrs de ne pas avoir de collision.
On est donc raisonnablement sûrs de ne pas avoir de collision.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- matwachich
- Membre émérite
- Messages : 986
- Enregistré le : lun. 19 oct. 2009 04:04
- Localisation : Algérie
- Status : Hors ligne
Re: [..] Grandes données TCP
Très intéressant!
J'aurai cependant 2 questions:
-Comment j'écris ce caractère dans une chaine???
- N'y en aurait-il pas un autre, unique comme celui la???
Edit: Je crois que j'ai trouvé!
Je pense qu'il faut faire Chr(65534)??? N'est pas?
Edit2: Et non! ça marche pas!!! Help
J'aurai cependant 2 questions:
-
- N'y en aurait-il pas un autre, unique comme celui la???
Edit: Je crois que j'ai trouvé!
Edit2: Et non! ça marche pas!!! Help
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
- jchd
- AutoIt MVPs (MVP)
- Messages : 2282
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Grandes données TCP
ChrW(0xFFFE) tout simplement.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- Iste
- Niveau 11
- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Grandes données TCP
@Tetdoss : Pour les questions portant sur des UDF, posez la sur les topic de ceux ci affin de garder ce thread propre. Idem, si vous avez plusieurs questions, ouvrez plusieurs topic.
Pensez que nous somme sur un forum, et qu'il faut au mieux encadrer les infos pour les recherche future d'autre personne ayant le probleme.
Pensez que nous somme sur un forum, et qu'il faut au mieux encadrer les infos pour les recherche future d'autre personne ayant le probleme.
Signez ici
- Tetdoss
- Niveau 3
- Messages : 39
- Enregistré le : mar. 15 nov. 2011 23:23
- Localisation : France 76
- Status : Hors ligne
Re: [..] Grandes données TCP
Désolé Iste, je me suis laissé emporté...
Juste une chose si je peux, pour répondre à jchd, bien sa méthode avec ChrW(0xFFFE) n'a pas l'air de fonctionner (mais ça fonctionne avec "|", ce que ne se gère pas si l'utilisateur rentre ça).
Voilà mon send :
et mon recv :
Ca m'affiche des "?" dans le MsgBox...
PS : @matwachich, le "$id" de client_recv c'est quoi ? Moi je gère seulement un client et un serveur donc ça à pas l'air de me servir, mais juste par curiosité, ça retourne l'id du client qui a envoyé la donnée, mais si c'est le serveur qui envoie cette donnée, l'idée vaut 1 c'est bien ça ?
Juste une chose si je peux, pour répondre à jchd, bien sa méthode avec ChrW(0xFFFE) n'a pas l'air de fonctionner (mais ça fonctionne avec "|", ce que ne se gère pas si l'utilisateur rentre ça).
Voilà mon send :
Code : Tout sélectionner
_TCPServer_Send($CONNECTED_CLIENT, "msgbox" & ChrW(0xFFFE) & sheet_msg_get_flag(GUICtrlRead($COMBO_1), GUICtrlRead($COMBO_2)) & ChrW(0xFFFE) & GUICtrlRead($INPUT_4) & ChrW(0xFFFE) & GUICtrlRead($EDIT_1))
Code : Tout sélectionner
Func client_recv($id, $data)
$array = StringSplit($data, ChrW(0xFFFE))
MsgBox(0, "", $array[1])
EndFunc
PS : @matwachich, le "$id" de client_recv c'est quoi ? Moi je gère seulement un client et un serveur donc ça à pas l'air de me servir, mais juste par curiosité, ça retourne l'id du client qui a envoyé la donnée, mais si c'est le serveur qui envoie cette donnée, l'idée vaut 1 c'est bien ça ?
Tetdoss
- jchd
- AutoIt MVPs (MVP)
- Messages : 2282
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Grandes données TCP
Attention, je n'ai pas vérifié la fonction pour voir si on transmet de l'ANSI, de l'UTF-8, du binaire, ou s'il y a un autre problème sous-jacent.
Je dis seulement que si on doit choisir un séparateur dans une chaîne AutoIt (donc encodage UCS-2) autant choisir ce caractère réservé dont on est certain qu'il ne risque pas de se retrouver dans une chaîne Unicode _valide_.
Mantenant, tout pinpin peut s'arroger le droit d'inclure ça dans une chaîne à ses risques et périls. Après je ne vois pas à priori ce qui émasule ce joli 0xFFFE durant le transit. Si celui-ci ne passe pas, il y a un [gros] problème quelque part.
On ne me ferait pas sauvagement un $chaine_a_transmettre = Binary($chaine), juste par hasard ?
Je dis seulement que si on doit choisir un séparateur dans une chaîne AutoIt (donc encodage UCS-2) autant choisir ce caractère réservé dont on est certain qu'il ne risque pas de se retrouver dans une chaîne Unicode _valide_.
Mantenant, tout pinpin peut s'arroger le droit d'inclure ça dans une chaîne à ses risques et périls. Après je ne vois pas à priori ce qui émasule ce joli 0xFFFE durant le transit. Si celui-ci ne passe pas, il y a un [gros] problème quelque part.
On ne me ferait pas sauvagement un $chaine_a_transmettre = Binary($chaine), juste par hasard ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- Tetdoss
- Niveau 3
- Messages : 39
- Enregistré le : mar. 15 nov. 2011 23:23
- Localisation : France 76
- Status : Hors ligne
Re: [..] Grandes données TCP
On va dire que j'ai résolu mon problème, j'ai pris ce caractère : "‚" une virgule "spéciale", et je fais des StringReplace("string", "‚", "") avant le Send, en espérant que personne n'aura besoin de ce caractère
. Mais même si un "pinpin" l'utilise, il sera ignoré donc ça me va
Et jchd, dans l'UDF de mat, les données sont cryptées avant d'être envoyées.


Et jchd, dans l'UDF de mat, les données sont cryptées avant d'être envoyées.
Tetdoss
- jchd
- AutoIt MVPs (MVP)
- Messages : 2282
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Grandes données TCP
A ta place, ça ne m'irait pas, mais pas du tout.
Le diagnostic de ton problème (enfin celui de Mat) est là :
Le texte signifie : "Tu me dois 123 €" en russe. On n'a pas le droit de transmettre un truc comme ça, c'est censuré par le KGB ou le GRU ?
Je vous laisse à vos devoirs de vacances
Le diagnostic de ton problème (enfin celui de Mat) est là :
Code : Tout sélectionner
#include <Crypt.au3>
_Crypt_Startup()
Local $hKey = _Crypt_DeriveKey("SomePassword", $CALG_RC4)
Local $sPlainText = "Вы должны мне € 123"
Local $bCypherText = _Crypt_EncryptData($sPlainText, $hKey, $CALG_USERKEY)
Local $sRecoveredText1 = BinaryToString(_Crypt_DecryptData($bCypherText, $hKey, $CALG_USERKEY), 1)
Local $sRecoveredText4 = BinaryToString(_Crypt_DecryptData($bCypherText, $hKey, $CALG_USERKEY), 4)
MsgBox(0, "Crypto Hachoir", "Le texte d'origine <" & $sPlainText & '>' & @LF & _
"est devenu soit ça <" & $sRecoveredText1 & '>' & @LF & _
"ou bien ça <" & $sRecoveredText4 & '>')
$bCypherText = _Crypt_EncryptData(StringToBinary($sPlainText, 4), $hKey, $CALG_USERKEY)
$sRecoveredText4 = BinaryToString(_Crypt_DecryptData($bCypherText, $hKey, $CALG_USERKEY), 4)
MsgBox(0, "Crypto Correct", "Le texte d'origine <" & $sPlainText & '>' & @LF & _
"est bien reçu en <" & $sRecoveredText4 & '>')
Je vous laisse à vos devoirs de vacances

La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
- matwachich
- Membre émérite
- Messages : 986
- Enregistré le : lun. 19 oct. 2009 04:04
- Localisation : Algérie
- Status : Hors ligne
Re: [..] Grandes données TCP
Pour l'id, il faut lire la documentation, bon certes c'est en anglais, alors je vais expliquer:
- Dans le script contenant le serveur:
Les callbacks recoivent en premier paramètre $iSocket, il correspond au client qui a envoyer le message, ou qui s'est déconnecté... bref, comme dit la doc
- Dans le Script contenant le/les clients
Les callbacks reçoivent en premier parametre le handle de client (retourné par _TCPClient_Create) concerné par l’évènement, c'est pratique quand on a plusieurs client par script, et que ils on tous les même fonctions callback.
J’espère que c'est claire!!!
C'est vrai que j'aurai aimé que cette discussions se passe dans le thread de l'UDF!
Merci beaucoup pour le petit exemple jchd!!! Très constructif!!!
Une mise à jour de l'UDF ne va tarder à pointer le bout de son nez avec ça...
Le problème d'envoi du caractère séparateur vient surement de là, mais au fait, avez vous regarder mon cadeau??? (les fonctions helpers) vous n'aurai pas à vous casser la tête avec!
- Dans le script contenant le serveur:
Les callbacks recoivent en premier paramètre $iSocket, il correspond au client qui a envoyer le message, ou qui s'est déconnecté... bref, comme dit la doc
Code : Tout sélectionner
[color=#BFBFFF]$iSocket[/color] The socket ID of the client that is concerned by the event
Les callbacks reçoivent en premier parametre le handle de client (retourné par _TCPClient_Create) concerné par l’évènement, c'est pratique quand on a plusieurs client par script, et que ils on tous les même fonctions callback.
J’espère que c'est claire!!!
C'est vrai que j'aurai aimé que cette discussions se passe dans le thread de l'UDF!
Merci beaucoup pour le petit exemple jchd!!! Très constructif!!!
Une mise à jour de l'UDF ne va tarder à pointer le bout de son nez avec ça...

Le problème d'envoi du caractère séparateur vient surement de là, mais au fait, avez vous regarder mon cadeau??? (les fonctions helpers) vous n'aurai pas à vous casser la tête avec!
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici