Page 2 sur 2
Re: [..] Grandes données TCP
Posté : mar. 22 nov. 2011 06:31
par jchd
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.
Re: [..] Grandes données TCP
Posté : mar. 22 nov. 2011 10:16
par matwachich
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
Re: [..] Grandes données TCP
Posté : mar. 22 nov. 2011 12:13
par jchd
ChrW(0xFFFE) tout simplement.
Re: [..] Grandes données TCP
Posté : mar. 22 nov. 2011 13:42
par Iste
@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.
Re: [..] Grandes données TCP
Posté : mar. 22 nov. 2011 22:00
par Tetdoss
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 :
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))
et mon recv :
Code : Tout sélectionner
Func client_recv($id, $data)
$array = StringSplit($data, ChrW(0xFFFE))
MsgBox(0, "", $array[1])
EndFunc
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 ?
Re: [..] Grandes données TCP
Posté : mar. 22 nov. 2011 22:16
par jchd
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 ?
Re: [..] Grandes données TCP
Posté : mar. 22 nov. 2011 23:11
par Tetdoss
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.
Re: [..] Grandes données TCP
Posté : mer. 23 nov. 2011 01:10
par jchd
A ta place, ça ne m'irait pas, mais pas du tout.
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 & '>')
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

Re: [..] Grandes données TCP
Posté : jeu. 24 nov. 2011 00:56
par matwachich
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
Code : Tout sélectionner
[color=#BFBFFF]$iSocket[/color] The socket ID of the client that is concerned by the event
- 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!