SendNetworkData()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Lea40
Messages : 22
Inscription : ven. 15/avr./2005 15:55
Localisation : Aquitaine

SendNetworkData()

Message par Lea40 »

Bonjour,

j'essaye de transmettre une chaine dont le dernier caractére est un 0 binnaire.
J'utilise pour cela la commande :

Code : Tout sélectionner

Ligne$ = "ABCDEFG"+chr(0)
SendNetworkData(ConnectionID, Ligne$, Len(Ligne$)+1)
sur le serveur, je ne recoit pas le 0.
Ou est l'erreur.

Par avance merci
Lea
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Le serveur récupérera la chaîne à l'aide un pointeur. Or pour récupérer la chaîne, il faudra faire un PeekS(). Or PeekS s'arrête au premier caractère d'ascii 0...
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Oui, Chr(0) (ou character null), sert a délimiter les chaines de charactere
Lea40
Messages : 22
Inscription : ven. 15/avr./2005 15:55
Localisation : Aquitaine

Message par Lea40 »

Quelle différence y a t'il entre :

Code : Tout sélectionner

SendNetworkData et
SendNetworkString ?
Qu'appele t'on :
Envoie des données brutes au client spécifié... ?

N'y a t'il pas moyen de contourner le pb ?

Encore merci de vos explications.
Lea
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

et comment fais-tu la réception des données ?
Resultat = ReceiveNetworkData(ConnectionID, *BufferMemoire, Longueur)

'Resultat' contient le nombre d'octets effictivements lus par la fonction. Si 'Resultat' est égal à 'Longueur', alors il reste des données en attente à lire.
Lea40
Messages : 22
Inscription : ven. 15/avr./2005 15:55
Localisation : Aquitaine

Message par Lea40 »

En fonction d'un protocole que je défini

Dans l'application qui m'interresse, l'échange entre un client et un serveur est parfaitement codifié.
Malheureuseement le serveur ne comprend la fin des messages que par la reception d'un \0
Lea
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Je suppose que tu utilise PeekS pour récuperer la chaine, essay en faisant PeekS(*Pointeur +1)
Pas sur que ça marche, et que ce soit correcte..
Lea40
Messages : 22
Inscription : ven. 15/avr./2005 15:55
Localisation : Aquitaine

Message par Lea40 »

Merci

J'essaye
Lea
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

cederavic a écrit :Je suppose que tu utilise PeekS pour récuperer la chaine, essay en faisant PeekS(*Pointeur +1)
Pas sur que ça marche, et que ce soit correcte..
T'as méthode permet de récupérer tous les caractères sauf le premier, non ?
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Lea40
Messages : 22
Inscription : ven. 15/avr./2005 15:55
Localisation : Aquitaine

Message par Lea40 »

Bonjour,
T'as méthode permet de récupérer tous les caractères sauf le premier, non ?
Tu as raison....
Lea
Lea40
Messages : 22
Inscription : ven. 15/avr./2005 15:55
Localisation : Aquitaine

Message par Lea40 »

Je vais continuer à chercher

Merci encore...
Lea
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

En tout cas ce n'est pas avec une chaîne de caractère que tu pourras faire ca... La chaîne s'arrête au premier '\0' qu'elle rencontre (pas comme en PHP par exemple)

En PB ce sont des "null-terminated strings", du coup, si tu veux lire une série de caractères finie par un zéro, voilà un petit exemple :

Code : Tout sélectionner

truc$ = "bonjour"
*Pointeur = @truc$

;------------------------

*pChaine.BYTE = *Pointeur - 1

Repeat
  *pChaine + 1
  Debug *pChaine\b
Until *pChaine\b = 0
Dri
Lea40
Messages : 22
Inscription : ven. 15/avr./2005 15:55
Localisation : Aquitaine

Message par Lea40 »

Oui pour lire, mais pour écrire et envoyer ce 0\ ?
Lea
Lea40
Messages : 22
Inscription : ven. 15/avr./2005 15:55
Localisation : Aquitaine

Message par Lea40 »

Je me demande si il n'y a pas un petit bug.

Car je ne m'explique pas autrement la meme réaction à l'execution de

SendNetworkData et de
SendNetworkString

Qu'en pensez vous ?
Lea
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

pas de bug, c'est vraiment l'interprétation PB des "null-terminated strings" qui fait que tu n'auras jamais le caractère \0 dans une chaîne...

Tu peux par contre envoyer une zone mémoire qui contient un octet à zéro sans aucun problème... mais ce n'est pas avec des fonctions de chaîne que tu le récupèreras...

Dri
Répondre