SOCKET : format des donnees envoyees avec fonction send() [ C, C++] - C++ - Programmation
Marsh Posté le 30-10-2002 à 18:07:21
Citation : |
L'argument de la fonction send est un char*, mais en fait
il faut plutôt le comprendre comme du void*.
Send n'en a rien à faire que tu envoies des éléments de
tel ou tel type. Il lui faut juste la taille de ce qu'il
y a à envoyer et l'addresse mémoire ou c'est placé.
Tu peux donc faire un send sur n'importe quoi, il faut
juste caster en char* pour le compilateur.
Une question que je me pose, c'est pourquoi ils ont mis
des char* ? (je sais juste que c'est une veille habitude
en C, mais pas plus)
Dernierement, un petit conseil : évite de mettre des tonnes
de ligne de code sur le forum : c'est inutile, illisible et
surtout ça donne la désagréable impression d'un "tenez
démerdez-vous avec ça"
Marsh Posté le 30-10-2002 à 18:09:09
mince, pas cool de changes ton texte quand je tape une
réponse... :-)
Marsh Posté le 30-10-2002 à 18:19:44
pascal_ a écrit a écrit :
|
OK j'essaie ca !
je suis daccord avec le fait que trop de code c'est penible, raison pour laquelle je l'ai enleve
Marsh Posté le 31-10-2002 à 10:31:12
bon apres essai de ta methode ca ne marche pas mieux ... la j'en suis a envoyer mes donnees sous forme de char* et je les caste sous forme d'unsigned char a l'arrivee, la ca marche....
j'ai cependant un autre soucis, dans le flux de donnee que je voudrai envoyer, je voudrai envoyer egalement du texte,
un truc du genre "01f124ac4557erreur dans procedure proc"
quelqu'un aurait une solution pour ca ???
Marsh Posté le 31-10-2002 à 11:10:31
Le_Chab a écrit a écrit : j'ai cependant un autre soucis, dans le flux de donnee que je voudrai envoyer, je voudrai envoyer egalement du texte, un truc du genre "01f124ac4557erreur dans procedure proc" quelqu'un aurait une solution pour ca ??? |
Ben faut que tu definisses un format pour tes donnees echangees.
Exemple:
- 1 octet: type a definir par toi meme.
- 1 int: longueur des donnees
- N octets: donnees
Apres si tu veux envoyer le texte "coucou" (supposons que tu as une classe de socket):
Code :
|
Marsh Posté le 31-10-2002 à 11:16:37
Attention tout de même, dans le cas où tu échanges des données entre 2 machines différentes : toutes ne codent pas les entiers de la même façon.
Si tu envoies l'entier sur 4 octets 0x00000001, tu risques de recevoir 0x01000000.
Regarde les fonction htonl, ntohl, htons, ntohs.
Il n'y a pas ce problème pour les caractères où les entiers sur 1 octet.
Marsh Posté le 30-10-2002 à 16:43:44
Question :
avec la fonction send() j'ai l'impression que le seul type de donnee que je peux envoyer sont soit des caracteres ASCII ou des char (de 0 a 127) ? Or je voudrais envoyer des unsigned char, est ce qu'il y a une solution ?
Message édité par Le_Chab le 30-10-2002 à 18:03:19