Autor
|
Tema: Error Socket?? (Leído 5,610 veces)
|
<<<-Basura->>>
Desconectado
Mensajes: 388
|
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: #define PORTNUM 2343 int main(int argc, char *argv[]) { char msg[] = "Hello World !\n"; struct sockaddr_in dest; /* socket info about the machine connecting to us */ struct sockaddr_in serv; /* socket info about our server */ int mysocket; /* socket used to listen for incoming connections */ int socksize = sizeof(struct sockaddr_in); memset(&serv, 0, sizeof(serv)); /* zero the struct before filling the fields */ serv.sin_family = AF_INET; /* set the type of connection to TCP/IP */ serv.sin_addr.s_addr = INADDR_ANY; /* set our address to any interface */ serv.sin_port = htons(PORTNUM); /* set the server port number */ mysocket = socket(AF_INET, SOCK_STREAM, 0); /* bind serv information to mysocket */ bind(mysocket, (struct sockaddr *)&serv, sizeof(struct sockaddr)); /* start listening, allowing a queue of up to 1 pending connection */ listen(mysocket, 1); int consocket = accept(mysocket, (struct sockaddr *)&dest, &socksize); while(consocket) { printf("Incoming connection from %s - sending welcome\n", inet_ntoa(dest.sin_addr)); send(consocket, msg, strlen(msg), 0); } close(consocket); close(mysocket); return EXIT_SUCCESS; }
|
|
|
En línea
|
<<<--Basura-->>>
|
|
|
<<<-Basura->>>
Desconectado
Mensajes: 388
|
Alguien Sabe ???
|
|
|
En línea
|
<<<--Basura-->>>
|
|
|
Queta
Desconectado
Mensajes: 267
|
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...
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
<<<-Basura->>>
Desconectado
Mensajes: 388
|
esta es la linea que me manda error las demás están bien pero no se porque int consocket = accept(mysocket, (struct sockaddr *)&dest, &socksize);
|
|
|
En línea
|
<<<--Basura-->>>
|
|
|
Queta
Desconectado
Mensajes: 267
|
¿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.
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
Queta
Desconectado
Mensajes: 267
|
Además de que no sé de dónde has sacado la función close...
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
<<<-Basura->>>
Desconectado
Mensajes: 388
|
Si incluí las librerías solamente que no las puse cuando mostré todo el código: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #define PORTNUM 2343
|
|
|
En línea
|
<<<--Basura-->>>
|
|
|
<<<-Basura->>>
Desconectado
Mensajes: 388
|
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
|
|
|
En línea
|
<<<--Basura-->>>
|
|
|
Queta
Desconectado
Mensajes: 267
|
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 : 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.
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
|
|
|