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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Librería Gtkmm [Linux] en: 21 Enero 2011, 09:27 am
Hola!

Bueno, estoy "traveseando" la librería Gtkmm en C++, operando en Linux. Lo que pasa es que hay muy pocos sources de ésta librería, y para ser honestos, la página del proyecto (gtkmm.org), no tiene buenas explicaciones, o ejemplos más o menos concretos.

¿Alguien que tenga conocimientos de esta librería y me quiera dar una mano?
Saludos ^^
2  Programación / Programación C/C++ / Re: Problema con sockets en Linux en: 20 Enero 2011, 07:16 am
¡Problema resuelto!

Lo que hice fue agregar eso que tu me dijiste para poder reutilizar puertos, y luego cambié el dominio de los sockets (quité el AF_LOCAL y puse AF_INET).
3  Programación / Programación C/C++ / Re: Problema con sockets en Linux en: 20 Enero 2011, 06:46 am
No sé si el código sea tuyo, busqué tantos que ni me acuerdo jaja. Al compilar no me da ningún error, por otro lado, cuando ejecuto el programa por primera vez, el server no me da error, pero cuando lo ejecuto por segunda vez, al parecer el puerto no se cierra, por eso me dice que lo estoy ocupando :S
4  Programación / Programación C/C++ / Problema con sockets en Linux en: 20 Enero 2011, 05:16 am
¡Hola!, al fin logré crear un servidor y un socket en C++ (mi primer socket), pero, a la hora de ejecutarlos, ambos archivos (el cliente y el servidor) me dan error.

Citar
Servidor:
socket--bind: Address already in use

Cliente:
Conect: No such file or directory

Bueno, esos son los dos errores que el programa me dá, el error del servidor al principio no me lo daba (la primera vez que ejecuté el archivo), pero de seguro el puerto no se cerró completamente, o el proceso no terminó, por eso que seguramente el puerto me da error :S

Ahora, el código de ambos archivos:

server.cpp
Código
  1. #include <netinet/in.h> /* Para el struct sockaddr_in */
  2. #include <sys/types.h> /* Para los tipos de socket */
  3. #include <sys/socket.h> /* Para llamar al socket */
  4. #include <stdio.h> /* Para el manejo de errores por perror() */
  5. #include <stdlib.h> /* Para salir del programa mediante exit() */
  6. #include <errno.h> /* Para utilizar errno en exit() */
  7. #include <strings.h> /* Para utilizar bzero() */
  8. #include <arpa/inet.h> /* Para usar inet_ntoa() */
  9. #include <unistd.h> /* Para usar close() */
  10.  
  11. #define PUERTO 1707
  12. #define MAXBUF 1024
  13.  
  14. int main (int argc, char const* argv[])
  15. {
  16. int sockfd;
  17. struct sockaddr_in self;
  18. char buffer[MAXBUF];
  19.  
  20. if ((sockfd = socket(AF_LOCAL, SOCK_STREAM, 0)) == -1)
  21. {
  22. perror("Socket");
  23. exit(errno);
  24. }
  25.  
  26. bzero(&self, sizeof(self));
  27. self.sin_family = AF_LOCAL;
  28. self.sin_port = htons(PUERTO);
  29. self.sin_addr.s_addr = INADDR_ANY;
  30.  
  31. if(bind(sockfd, (struct sockaddr *)&self, sizeof(self)) == -1)
  32. {
  33. perror("socket--bind");
  34. exit(errno);
  35. }
  36.  
  37. if(listen(sockfd, 1) == -1)
  38. {
  39. perror("socket--listen");
  40. exit(errno);
  41. }
  42.  
  43. while(1)
  44. {
  45. int clientfd;
  46. struct sockaddr_in client_addr;
  47. int addrlen = sizeof(client_addr);
  48.  
  49. clientfd = accept(sockfd, (struct sockaddr*)&client_addr, (socklen_t*)&addrlen);
  50. printf("%s:%d conectado\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
  51.  
  52. send(clientfd, buffer, recv(clientfd, buffer, MAXBUF, 0), 0);
  53. close(clientfd);
  54. }
  55.  
  56. close(sockfd);
  57. return 0;
  58.  
  59. }



client.cpp
Código
  1. #include <netinet/in.h> /* Para el struct sockaddr_in */
  2. #include <sys/types.h> /* Para los tipos de socket */
  3. #include <sys/socket.h> /* Para llamar al socket */
  4. #include <stdio.h> /* Para el manejo de errores por perror() */
  5. #include <stdlib.h> /* Para salir del programa mediante exit() */
  6. #include <errno.h> /* Para utilizar errno en exit() */
  7. #include <strings.h> /* Para utilizar bzero() */
  8. #include <arpa/inet.h> /* Para usar inet_aton() */
  9. #include <unistd.h> /* Para usar close() */
  10.  
  11. #define MAXBUF 1024
  12. #define PUERTO 1707
  13. #define SERVER_ADDR "127.0.0.1"
  14.  
  15. int main (int argc, char const* argv[])
  16. {
  17. int sockfd;
  18. struct sockaddr_in dest;
  19. char buffer[MAXBUF];
  20.  
  21. /* Creación del socket */
  22. if((sockfd = socket(AF_LOCAL, SOCK_STREAM, 0)) == -1)
  23. {
  24. perror("Socket");
  25. exit(errno);
  26. }
  27.  
  28. /* Configuración del socket */
  29. dest.sin_family = AF_LOCAL;
  30. dest.sin_port = htons(PUERTO);
  31. dest.sin_addr.s_addr = inet_addr(SERVER_ADDR);
  32.  
  33. /* Conectar al servidor */
  34. if(connect(sockfd, (struct sockaddr *)&dest, sizeof(struct sockaddr)) == -1)
  35. {
  36. perror("Conect");
  37. exit(errno);
  38. }
  39.  
  40. /* Recibir respuesta */
  41. bzero(buffer, MAXBUF);
  42. recv(sockfd, buffer, sizeof(buffer), 0);
  43. printf("%s\n", buffer);
  44.  
  45. /* Limpiar todo */
  46. close(sockfd);
  47. return 0;
  48. }



Bien, expertos de la materia, agradecería me pudiesen ayudar, ya que no tengo idea de qué diantres está pasando :S
Saludos ^^
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines