• Domingo 15 de Diciembre de 2024, 11:33

Autor Tema:  Re: sobre un tutorial de chuidiang  (Leído 1095 veces)

joaquinrg

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: sobre un tutorial de chuidiang
« en: Sábado 4 de Octubre de 2003, 13:57 »
0
Hola, q tal? despues de compilar el codigo de ejemplo del programa cliente/servidor del primero tutorial... me compila bien el cliente, pero el servidor no. Este es el codigo:
 
Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <sys/types.h>
  4. #include <sys/socket.h>
  5. #include <netinet/in.h>
  6. #include <netdb.h>
  7.  
  8. #include <sys/param.h>  
  9. #include <errno.h>
  10.  
  11. #define ERROR(s)       {fprintf(stderr,"%d-",errno); perror(s); return(-1);}
  12.  
  13. main (argc, argv)
  14. int argc;
  15. char *argv[];
  16. {
  17.     struct sockaddr_in sa;  
  18.     struct sockaddr_in caller;
  19.     int s, msgsock, length;
  20.     int retval;
  21.     char buf[BUFSIZ], acknowledgement[BUFSIZ];
  22.  
  23.  
  24.  
  25.     if ((s = socket(AF_INET,SOCK_STREAM,0)) < 0)  
  26.         ERROR ("socket");
  27.  
  28.     /* name socket, register the socket */
  29.     sa.sin_family= AF_INET;        
  30.     sa.sin_addr.s_addr = INADDR_ANY;       /* not choosy about who calls */
  31.         sa.sin_port= 22222;                   /* this is our port number */
  32.  
  33.         if (bind(s,(struct sockaddr_in *)&sa,sizeof sa) < 0)
  34.                 ERROR ("bind");                 /* bind address to socket */
  35.  
  36.     /* get assigned port number and print it */
  37.     length = sizeof(sa);
  38.         if (getsockname(s, (struct sockaddr_in *)&sa, &length) < 0)
  39.                 ERROR("getsockname");
  40.  
  41.  
  42.  
  43.     /* listen for connections on a socket */
  44.     listen (s, 5);
  45.  
  46.     /* Use accept to wait for calls to the socket.  Accept returns
  47.     a new socket which is connected to the caller.  msgsock will be a
  48.         temporary (non-resuable) socket different from s */
  49.     if ((msgsock = accept(s,(struct sockaddr *)&caller,&length)) < 0)
  50.             ERROR ("accept");
  51.  
  52.      /* optional ack; demonstrates bidirectionality */
  53.     gethostname(buf, sizeof buf);
  54.  
  55.     /* write into the msgsock; the "s" is _only_for_rendezvous_ */
  56.     if ( write ( msgsock, acknowledgement, sizeof acknowledgement ) < 1 )
  57.         perror(argv[0]);
  58.  
  59.  
  60.     /* read lines until the stream closes */
  61.  
  62.     retval = 1;
  63.     while(retval !=0 )  {
  64.         bzero(buf, sizeof(buf));
  65.         if( (retval = read(msgsock, buf, sizeof(buf))) < 0)
  66.                 perror("reading stream message");
  67.     if (retval == 0) printf("ending connectionn");
  68.         else  printf("read-->%sn", buf);
  69.      }
  70.  
  71.     close(msgsock);
  72.     close (s);
  73.  
  74.     exit (0);
  75. }
  76.  
  77.  

El error que me da es este:
 
Código: Text
  1.  
  2. $ gcc server.c -o server
  3. server.c: In function `main':
  4. server.c:33: warning: passing arg 2 of `bind' from incompatible pointer type
  5. server.c:38: warning: passing arg 2 of `getsockname' from incompatible pointer t
  6. ype
  7.  
  8.  
Sabeis porque puede ser? Gracias

joaquinrg

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: sobre un tutorial de chuidiang
« Respuesta #1 en: Domingo 5 de Octubre de 2003, 13:01 »
0
bueno, me confundio, no es el de chuidiang,  pero ahora lo comparo con el suyo a ver si encuentro cual es el error

joaquinrg

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
sobre un tutorial de chuidiang
« Respuesta #2 en: Domingo 5 de Octubre de 2003, 13:22 »
0
solucionado, en vez de poner sockaddr_in habia q poner solo sockaddr