elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Sockets] - Error en BIND
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Sockets] - Error en BIND  (Leído 4,540 veces)
farresito


Desconectado Desconectado

Mensajes: 302



Ver Perfil
[Sockets] - Error en BIND
« en: 25 Abril 2011, 19:24 pm »

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.

Código
  1. #include <iostream>
  2. #include <signal.h>
  3. #include <arpa/inet.h>
  4. #include <netdb.h>
  5. #include <netinet/in.h>
  6. #include <sys/wait.h>
  7. #include <sys/socket.h>
  8. #include <sys/types.h>
  9. #include <string.h>
  10. #include <errno.h>
  11. #include <unistd.h>
  12. #include <stdlib.h>
  13. #include <stdio.h>
  14. using namespace std;
  15.  
  16. int main()
  17. {
  18.    int desc_serv, desc_cliente //Descriptores;
  19.    int rv //Comprueba el estado de GETADDRINFO;
  20.    struct addrinfo structserv //Estructura usada en GETADDRINFO;
  21.    struct addrinfo *resultados //Estructura resultante de GETADDRINFO;
  22.    struct addrinfo structcliente //Estructura del CLIENTE;
  23.  
  24.    memset(&structserv, 0, sizeof (structserv));
  25.  
  26.  
  27.    structserv.ai_family = AF_UNSPEC;
  28.    structserv.ai_socktype = SOCK_STREAM;
  29.    structserv.ai_flags = AI_PASSIVE;
  30.  
  31.    //GetAddrInfo
  32.    if ((rv = getaddrinfo(NULL, "16969", &structserv, &resultados)) != 0)
  33.    {
  34.        cout << "Error en GETADDRINFO" << endl;
  35.        exit(1);
  36.    }
  37.  
  38.    //Socket
  39.    if ((desc_serv = socket(resultados->ai_family, resultados->ai_socktype, resultados->ai_protocol) == -1))
  40.    {
  41.        cout << "Error en SOCKET" << endl;
  42.        exit(1);
  43.    }
  44.  
  45.    //Bind
  46.    if (bind(desc_serv, resultados->ai_addr, resultados->ai_addrlen) == -1)
  47.    {
  48.        cout << "Error en BIND" << endl;
  49.        exit(1);
  50.    }
  51.  
  52.    //Listen
  53.    if ((listen(desc_serv, 10)) == -1)
  54.    {
  55.        cout << "Error en LISTEN" << endl;
  56.        exit(1);
  57.    }
  58.  
  59.    //Accept
  60.    if ((desc_cliente = accept(desc_serv, structcliente.ai_addr, 0)) == -1)
  61.    {
  62.        cout << "Error en ACCEPT" << endl;
  63.        exit(1);
  64.    }
  65.    else
  66.    {
  67.        cout << "¡Funciona!" << endl;
  68.    }
  69. }
  70.  

Un abrazo!


En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: [Sockets] - Error en BIND
« Respuesta #1 en: 26 Abril 2011, 18:40 pm »

Lo más seguro es que te bloquea el firewall, no tienes permisos, el puerto no está abierto... ¡Ohh Dios mío, qué largo!

Código
  1. #include <sys/socket.h>
  2. #include <arpa/inet.h>
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7.  
  8. int main (int argc, char *argv [])
  9. {
  10. printf ("SmallServ 2.0 - Sagrini 2010 - elhacker.NET\n");
  11.  
  12. if (argc<2)
  13. {
  14. printf ("Use: %s <port>\n\n", argv [0]);
  15. return 1;
  16. }
  17.  
  18. int sockfd, newsock;
  19. struct sockaddr_in client, host;
  20. int size=sizeof (client);
  21.  
  22. sockfd=socket (2, 1, 0);
  23. host.sin_family=AF_INET;
  24. host.sin_port=htons (atoi (argv [1]));
  25. host.sin_addr.s_addr=0;
  26. bind (sockfd, (struct sockaddr*)&host, sizeof (struct sockaddr));
  27. listen (sockfd, 3);
  28.  
  29. while (1)
  30. {
  31. newsock=accept (sockfd, (struct sockaddr*)&client, &size);
  32. printf ("Everything's OK from %s:%d!\n", inet_ntoa (client.sin_addr), ntohs (client.sin_port));
  33. send (newsock, "OK!\r\n", 5, 0);
  34. close (newsock);
  35. }
  36. close (sockfd);
  37. return 0;
  38. }
  39.  

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 Desconectado

Mensajes: 302



Ver Perfil
Re: [Sockets] - Error en BIND
« Respuesta #2 en: 26 Abril 2011, 19:52 pm »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error tonto con threads y sockets « 1 2 3 »
Java
Debci 22 12,216 Último mensaje 28 Diciembre 2009, 10:20 am
por Debci
¡Error de Conexión con Sockets!
.NET (C#, VB.NET, ASP)
Jesuscc29 4 20,026 Último mensaje 16 Junio 2011, 21:46 pm
por Jesuscc29
[Python] Error con Sockets
Scripting
calk9 0 4,384 Último mensaje 2 Octubre 2011, 18:46 pm
por calk9
error al compilar sockets en c
Programación C/C++
Drewermerc 1 2,649 Último mensaje 27 Abril 2014, 22:54 pm
por Drewermerc
Error en metasploit: Handler failed to bind to...
Seguridad
dlazart3 1 5,018 Último mensaje 11 Junio 2015, 15:11 pm
por andavid
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines