un problème avec les sockets :(

un problème avec les sockets :( - C - Programmation

Marsh Posté le 23-01-2008 à 15:36:04    

Bonjour,
j'ai un sérieux problème, voila j'utilise cette fonction (voir ci dessous), le problème c'est que j'arrive pas à envoyer correctement le buffer,
quand j'édite la taille du buffer, il indinque que c'est 2 alors que ca devra etre normalement 20. je crois que j'ai des erreur lors du remplissage du buffer.
Aidez moi svp
Sara  
 

Code :
  1. uint16_t seq, message_len, hl, tp, ln;
  2. uint32_t at, gd;
  3. unsigned char *buffer;
  4. unsigned int echolen;
  5. int i;
  6. buffer = (__u8 *) malloc(100);
  7. /* initialisation et creation de la socket */
  8. // je l'ai pas mis pour qu'il soit pas tres encombrant, en plus pas de prob avec cette partie car la socket s'ouvre normalement et la connexion est aussi réussi, c'est le buffer qui buge
  9. seq = htons(0);
  10. hl = htons(0);
  11. at = htonl(1);
  12. gd = htonl(1);
  13. tp = htons(2);
  14. ln = htons(2);
  15. message_len = htons(20);
  16. buffer[0] = 0x10;
  17. buffer[1] = 0x01;
  18. bcopy(&seq,&(buffer[2]),2);
  19. bcopy(&at,&(buffer[4]),4);
  20. bcopy(&gd,&(buffer[8]),4);
  21. bcopy(&hl,&(buffer[12]),2);
  22. bcopy(&message_len,&(buffer[14]),2);
  23. bcopy(&(tp),&(buffer[16]),2);
  24. bcopy(&(ln),&(buffer[18]),2);
  25. /* Send the message */
  26. echolen = strlen(buffer);
  27. printf(" longeur est %d\n", echolen);
  28. /* ici echolen est égale à 2 alors que normalement elle devra etre à 20, ce qui pause des problème pour l'envoie et lors de la reception*/
  29. if (send(s, buffer, echolen, 0) != echolen) {
  30.  perror("Send():" );
  31. }

Reply

Marsh Posté le 23-01-2008 à 15:36:04   

Reply

Marsh Posté le 23-01-2008 à 16:30:12    

Heu, si ton message est figé dans le marbre, et a une taille fixe de 20 octets, alors utilise la constante 20 et pas un strlen() (peut-être avec un #define pour limiter la casse en cas de changement).

Reply

Marsh Posté le 23-01-2008 à 16:30:34    

buffer n'est pas une chaîne de caractères.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed