Autor
|
Tema: [Sockets] - Error en BIND (Leído 4,540 veces)
|
farresito
Desconectado
Mensajes: 302
|
Holas a todos, Llevo bastante tiempo con un error que me da y no lo logro resolver. NO ES DE COMPILAR, porque me compila sin errores, sino que cuando ejecuto el programa me marca 'error en BIND', que es el IF que tengo puesto, pero creo que todo está bien. El código no está terminado del todo, porque estaba haciendo pruebas en aplicar la estructura storage en vez de una _in normal, pero hasta bind no deberia haber problema Les dejo el código a ver si pueden ver algun error. #include <iostream> #include <signal.h> #include <arpa/inet.h> #include <netdb.h> #include <netinet/in.h> #include <sys/wait.h> #include <sys/socket.h> #include <sys/types.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> using namespace std; int main() { int desc_serv, desc_cliente //Descriptores; int rv //Comprueba el estado de GETADDRINFO; struct addrinfo structserv //Estructura usada en GETADDRINFO; struct addrinfo *resultados //Estructura resultante de GETADDRINFO; struct addrinfo structcliente //Estructura del CLIENTE; memset(&structserv, 0, sizeof (structserv)); structserv.ai_family = AF_UNSPEC; structserv.ai_socktype = SOCK_STREAM; structserv.ai_flags = AI_PASSIVE; //GetAddrInfo if ((rv = getaddrinfo(NULL, "16969", &structserv, &resultados)) != 0) { cout << "Error en GETADDRINFO" << endl; exit(1); } //Socket if ((desc_serv = socket(resultados->ai_family, resultados->ai_socktype, resultados->ai_protocol) == -1)) { cout << "Error en SOCKET" << endl; exit(1); } //Bind if (bind(desc_serv, resultados->ai_addr, resultados->ai_addrlen) == -1) { cout << "Error en BIND" << endl; exit(1); } //Listen if ((listen(desc_serv, 10)) == -1) { cout << "Error en LISTEN" << endl; exit(1); } //Accept if ((desc_cliente = accept(desc_serv, structcliente.ai_addr, 0)) == -1) { cout << "Error en ACCEPT" << endl; exit(1); } else { cout << "¡Funciona!" << endl; } }
Un abrazo!
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Lo más seguro es que te bloquea el firewall, no tienes permisos, el puerto no está abierto... ¡Ohh Dios mío, qué largo! #include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main (int argc, char *argv []) { printf ("SmallServ 2.0 - Sagrini 2010 - elhacker.NET\n"); if (argc<2) { printf ("Use: %s <port>\n\n", argv [0]); return 1; } int sockfd, newsock; struct sockaddr_in client, host; int size=sizeof (client); sockfd=socket (2, 1, 0); host.sin_family=AF_INET; host. sin_port=htons (atoi (argv [1])); host.sin_addr.s_addr=0; bind (sockfd, (struct sockaddr*)&host, sizeof (struct sockaddr)); listen (sockfd, 3); while (1) { newsock=accept (sockfd, (struct sockaddr*)&client, &size); printf ("Everything's OK from %s:%d!\n", inet_ntoa (client. sin_addr), ntohs (client. sin_port)); send (newsock, "OK!\r\n", 5, 0); close (newsock); } close (sockfd); return 0; }
PS: Un saludo. Sagrini
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
farresito
Desconectado
Mensajes: 302
|
Gracias por respinder Sagrini. De hecho, ya sabía usar más o menos la forma antigua, que es la que usas tu, con el sockaddr_in, pero recientemente sacaron la estructura addrinfo, que tiene la función getaddrinfo que te lo rellena todo, y que es más recomendado, segun comentan en la web oficial del POSIX. Es por ello que me decidí a aprenderlo, porque, a más, si te fijas, no tienes que usar htons, hacer cambios con (struct sockaddr *)... etc. No se, se ve el código más limpio en mi opinión. Puedes echar una ojeada en la web de beej: http://beej.us/guide/bgnet/En fin, agradezco de verdad que me hayas respondido . Ya veré que es lo que realmente le pasa al trasto este y a ver si se puede arreglar, postear el código y aprender de esta forma nueva Un abrazo!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Error tonto con threads y sockets
« 1 2 3 »
Java
|
Debci
|
22
|
12,216
|
28 Diciembre 2009, 10:20 am
por Debci
|
|
|
¡Error de Conexión con Sockets!
.NET (C#, VB.NET, ASP)
|
Jesuscc29
|
4
|
20,026
|
16 Junio 2011, 21:46 pm
por Jesuscc29
|
|
|
[Python] Error con Sockets
Scripting
|
calk9
|
0
|
4,384
|
2 Octubre 2011, 18:46 pm
por calk9
|
|
|
error al compilar sockets en c
Programación C/C++
|
Drewermerc
|
1
|
2,649
|
27 Abril 2014, 22:54 pm
por Drewermerc
|
|
|
Error en metasploit: Handler failed to bind to...
Seguridad
|
dlazart3
|
1
|
5,018
|
11 Junio 2015, 15:11 pm
por andavid
|
|