Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: <<<-Basura->>> en 28 Junio 2011, 08:40 am



Título: Error Socket??
Publicado por: <<<-Basura->>> en 28 Junio 2011, 08:40 am
Hola tengo el siguiente error estoy practicando socket y estoy tratando de compilar este código que me encontre por hay pero me da los siguientes errores cuando intento compilar:

servidor.cpp: In function ‘int main(int, char**)’:
servidor.cpp:34:73: error: invalid conversion from ‘int*’ to ‘socklen_t*’
servidor.cpp:34:73: error:   initializing argument 3 of ‘int accept(int, sockaddr*, socklen_t*)

Bueno el código es este:

Código
  1. #define PORTNUM 2343
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.    char msg[] = "Hello World !\n";
  6.  
  7.    struct sockaddr_in dest; /* socket info about the machine connecting to us */
  8.    struct sockaddr_in serv; /* socket info about our server */
  9.    int mysocket;            /* socket used to listen for incoming connections */
  10.    int socksize = sizeof(struct sockaddr_in);
  11.  
  12.    memset(&serv, 0, sizeof(serv));    /* zero the struct before filling the fields */
  13.    serv.sin_family = AF_INET;         /* set the type of connection to TCP/IP */
  14.    serv.sin_addr.s_addr = INADDR_ANY; /* set our address to any interface */
  15.    serv.sin_port = htons(PORTNUM);    /* set the server port number */    
  16.  
  17.    mysocket = socket(AF_INET, SOCK_STREAM, 0);
  18.  
  19.    /* bind serv information to mysocket */
  20.    bind(mysocket, (struct sockaddr *)&serv, sizeof(struct sockaddr));
  21.  
  22.    /* start listening, allowing a queue of up to 1 pending connection */
  23.    listen(mysocket, 1);
  24.  
  25.    int consocket = accept(mysocket, (struct sockaddr *)&dest, &socksize);
  26.  
  27.    while(consocket)
  28.    {
  29.        printf("Incoming connection from %s - sending welcome\n", inet_ntoa(dest.sin_addr));
  30.        send(consocket, msg, strlen(msg), 0);
  31.    }
  32.  
  33.    close(consocket);
  34.    close(mysocket);
  35.    return EXIT_SUCCESS;
  36. }
  37.  



Título: Re: Error Socket??
Publicado por: <<<-Basura->>> en 28 Junio 2011, 21:22 pm
Alguien Sabe  :huh: ???


Título: Re: Error Socket??
Publicado por: Queta en 28 Junio 2011, 23:20 pm
Teóricamente te debería compilar, si introdujeras las bibliotecas correspondientes. ¿Cómo compilaste?

Además de que no sé de dónde has sacado la función close...


Título: Re: Error Socket??
Publicado por: <<<-Basura->>> en 28 Junio 2011, 23:46 pm
esta es la linea que me manda error las demás están bien pero no se porque  >:D

Código
  1. int consocket = accept(mysocket, (struct sockaddr *)&dest, &socksize);


Título: Re: Error Socket??
Publicado por: Queta en 28 Junio 2011, 23:53 pm
¿No te da errores, si no incluyes las librerías?

No sé, depura y mira qué pasa. Te debería funcionar, si no, crea un nuevo proyecto.


Título: Re: Error Socket??
Publicado por: Queta en 28 Junio 2011, 23:54 pm
Además de que no sé de dónde has sacado la función close...


Título: Re: Error Socket??
Publicado por: <<<-Basura->>> en 28 Junio 2011, 23:54 pm
Si incluí las librerías solamente que no las puse cuando mostré todo el código:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <arpa/inet.h>
  6. #include <sys/types.h>
  7. #include <netinet/in.h>
  8. #include <sys/socket.h>
  9.  
  10. #define PORTNUM 2343
  11.  


Título: Re: Error Socket??
Publicado por: <<<-Basura->>> en 28 Junio 2011, 23:58 pm
Como puse al principio, el código no es mio lo tome prestado, y si borras las lineas de close, siempre tira el mismo error en las mismas lineas


Título: Re: Error Socket??
Publicado por: Queta en 29 Junio 2011, 00:09 am
Pensaba que trabajabas con los sockets de Windows, entonces close sí existe. No sé, te voy a decir como ultimátum que cambies el tercer parámetro por un puntero a socklen_t :

Citar
a pointer to a socklen_t location that specifies the size of the client address structure passed to accept(). When accept() returns, this location indicates how many bytes of the structure were actually used.


Título: Re: Error Socket??
Publicado por: <<<-Basura->>> en 29 Junio 2011, 00:37 am
Bien tenias toda la razón eso es!!  ;D ;D


Título: Re: Error Socket??
Publicado por: Queta en 29 Junio 2011, 00:47 am
Mira qué bien ;D.