Tom's Guide > Forum > Programmation > [C] Problème de Socket UNIX

[C] Problème de Socket UNIX

Forum Programmation : [C] Problème de Socket UNIX

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

J'ai décidé de me mettre à la programmation des sockets. J'ai donc démarré ma Debian, et ai commencé à coder. Après quelques problèmes, il en reste un (ou deux ?) qui me résistent... Voici le code :

Code :
  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. int main()
  4. {
  5.     struct sockaddr_in address;
  6.     memset(&address, 0, sizeof(struct sockaddr_in));
  7.          
  8.     int iSocket = socket(AF_INET, SOCK_DGRAM, 0);
  9.    
  10.     address.sin_family = AF_INET;
  11.     address.sin_port = htons(10314);
  12.    
  13.     bind(iSocket, &address, sizeof(address));
  14.    
  15.     close(iSocket);
  16.    
  17.     return 0;
  18. }


Et lors de la compilation, j'ai droit à une erreur :

Code :
  1. main.c:16: error: storage size of 'address' isn't known
  2. main.c:17: error: invalid application of 'sizeof' to an incomplete type



Si quelqu'un a une idée, je suis preneur ! :-) A noter que je n'ai pas très bien compris... La structure est déjà défini dans un des headers, non ? Alors pourquoi devoir déclarer sa taille ?

Merci beaucoup !

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Remplace

Code :
  1. le sizeof(address);

par

Code :
  1. sizeof(struct sockaddr_in);

Répondre à CRicky

voici le code corrigé (passe avec -Wall)

Code :
  1. #include <sys/socket.h>
  2. #include <netinet/in.h> //sockaddr_in
  3. #include <sys/types.h>
  4. #include <string.h> //memset
  5. #include <unistd.h> //close
  6. int main(void)
  7. {
  8.         struct sockaddr_in address;
  9.         memset(&address, 0, sizeof(struct sockaddr_in));
  10.         int iSocket = socket(AF_INET, SOCK_DGRAM, 0);
  11.         address.sin_family = AF_INET;
  12.         address.sin_port = htons(10314);
  13.         bind(iSocket, (struct sockaddr*) &address, sizeof(address)); //2e element est une struct sockaddr*
  14.         close(iSocket);
  15.         return 0;
  16. }

Répondre à mhooreman
Tom's Guide > Forum > Programmation > [C] Problème de Socket UNIX
Aller à :

Il y a 1688 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens