erreur de compilation

erreur de compilation - C - Programmation

Marsh Posté le 22-12-2011 à 21:24:09    

salut je suis demandée a developper un code c qui contient un client d'un socket tcp voila mon code

Code :
  1. #if defined (WIN32)
  2.     #include <winsock2.h>
  3.     typedef int socklen_t;
  4. #elif defined (linux)
  5.     #include <sys/types.h>
  6.     #include <sys/socket.h>
  7.     #include <netinet/in.h>
  8.     #include <arpa/inet.h>
  9.     #include <unistd.h>
  10.     #define INVALID_SOCKET -1
  11.     #define SOCKET_ERROR -1
  12.     #define closesocket(s) close(s)
  13.     typedef int SOCKET;
  14.     typedef struct sockaddr_in SOCKADDR_IN;
  15.     typedef struct sockaddr SOCKADDR;
  16. #endif
  17.   struct hostent {
  18.    char    *h_name;       /* Nom officiel de l'hôte.   */
  19.    char   **h_aliases;    /* Liste d'alias.            */
  20.    int      h_addrtype;   /* Type d'adresse de l'hôte. */
  21.    int      h_length;     /* Longueur de l'adresse.    */
  22.    char   **h_addr_list;  /* Liste d'adresses.         */
  23. #define h_addr  h_addr_list[0] /* pour compatibilité.  */
  24. };
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #define PORT 23
  28. #define SERVERHOST "localhost"
  29. void init_sockaddr(struct sockaddr_in*name,const char* hostname,uint16_t port){/*Initialisation de la structure contenant les paramètres de connexion et d'adresse de la socket*/
  30. struct hostent *hostinfo=NULL;
  31. name->sin_family=AF_INET;
  32. name->sin_port=htons(port);
  33. hostinfo= gethostbyname (hostname);
  34. if(hostinfo==NULL){
  35. fprintf(stderr,"Unkown host %s \n",hostname);
  36. exit(EXIT_FAILURE);}
  37. name->sin_addr=*(struct in_addr*)hostinfo->h_addr;}
  38. int main(void)
  39. {
  40.     #if defined (WIN32)
  41.         WSADATA WSAData;
  42.         int erreur = WSAStartup(MAKEWORD(2,2), &WSAData);
  43.     #else
  44.         int erreur = 0;
  45.     #endif
  46.     SOCKET sock;
  47.     SOCKADDR_IN servername;
  48.     if(!erreur)
  49.     {
  50.         /* Création de la socket */
  51.         sock = socket(AF_INET, SOCK_STREAM, 0);
  52.         /* Configuration de la connexion */
  53.        init_sockaddr(&servername,SERVERHOST,PORT);
  54.         /* Si le client arrive à se connecter */
  55.         if(connect(sock, (SOCKADDR*)&servername, sizeof(servername)) != SOCKET_ERROR)
  56.             printf("Connexion à %s sur le port %d\n", inet_ntoa(servername.sin_addr), htons(servername.sin_port));
  57.         else
  58.             printf("Impossible de se connecter\n" );
  59.         /* On ferme la socket précédemment ouverte */
  60.         closesocket(sock);
  61.         #if defined (WIN32)
  62.             WSACleanup();
  63.         #endif
  64.     }
  65.     return EXIT_SUCCESS;
  66. }

mais en le compilant avec le gcc sous ubunto j'obtiens:In function ‘init_sockaddr’:
:36:9assignment makes pointer from integer without a cast [enabled by default] pouvez vous m'aider svp ?

Reply

Marsh Posté le 22-12-2011 à 21:24:09   

Reply

Marsh Posté le 23-12-2011 à 01:14:34    

init_sockaddr((struct sockaddr_in*) &servername, SERVERHOST, PORT);
non?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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