comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Ayuda] Programando socke cliente y servidor en C

  • 1 Respuestas
  • 812 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado r1ghtz0

  • *
  • Underc0der
  • Mensajes: 9
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« en: Octubre 13, 2014, 06:32:20 pm »
Aquí está el servidor, lo que hago es ingresar los datos del servidor pero me gustaría ver cual es la ip que se le asigna al servidor con INADDR_ANY, ¿Como puedo hacer para ver la ip del server?

Servidor:
Código: C
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5.  
  6. int main(void)
  7. {
  8.         /* Abriendo socket */
  9.         int sockfd, new_sockfd;
  10.         struct sockaddr_in server_addr;
  11.         struct sockaddr_in cliente_addr;
  12.         int addrlen;
  13.        
  14.         sockfd= socket(AF_INET, SOCK_STREAM, 0);
  15.         if(sockfd == -1){
  16.                 No tienes permisos para ver links. Registrate o Entra con tu cuenta("Error abriendo el socket...");
  17.                 }
  18.        
  19.         /* Asociación de parámetros al socket */
  20.         server_addr.sin_family= AF_INET;
  21.         server_addr.sin_port= htons(1234);
  22.         server_addr.sin_addr.s_addr= htonl(INADDR_ANY);
  23.        
  24.         if(bind(sockfd, (struct sockaddr *) &server_addr, sizeof(server_addr))==-1){
  25.                 No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nError en bind()...");
  26.                 }
  27.        
  28.         /* Habilitamos el socket para recibir peticiones y establecer conexiones */
  29.         listen(sockfd, 5);
  30.         addrlen= sizeof(struct sockaddr);
  31.        
  32.         /* Recibimos peticiones con accept() */
  33.         new_sockfd= accept(sockfd, (struct sockaddr *) &cliente_addr, &addrlen);
  34.         if(new_sockfd == -1){
  35.                 No tienes permisos para ver links. Registrate o Entra con tu cuenta("Error, no se pudo recibir petición correctamente");
  36.                 }
  37.        
  38.         return 0;
  39. }
  40.  
  41.  

Ahora lo que no entiendo en el cliente es cómo se le asignan los datos, es decir, cómo o de donde el cliente optiene su puerto de origen  y su direción ip, porque no se especifican en ningun lado, solo estan los datos del servidor, es todo.

Cliente:
Código: C
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5.  
  6. int main(void)
  7. {
  8.         struct sockaddr_in server;
  9.         char ip[16];
  10.         int fd, puerto;
  11.         int addrlen;
  12.        
  13.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese la ip del servidor\n");
  14.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("%s", ip);
  15.        
  16.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese el puerto de conexión\n");
  17.         No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d", &puerto);
  18.        
  19.         /* Abrimos el socket */
  20.         fd= socket(AF_INET, SOCK_STREAM, 0);
  21.         if(fd==-1){
  22.                 No tienes permisos para ver links. Registrate o Entra con tu cuenta("Error abriendo el socket");
  23.                 return -1;
  24.                 }
  25.        
  26.         /* Definimos los datos del servidor */
  27.         server.sin_family= AF_INET;
  28.         server.sin_port= htons(1234);
  29.         server.sin_addr.s_addr= inet_addr(ip);
  30.        
  31.         addrlen= sizeof(struct sockaddr);
  32.        
  33.         if(connect(fd, (struct sockaddr *)&server, addrlen) == -1){
  34.                 No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nHa ocurrido un error al conectarce al server");
  35.                 }
  36.        
  37.        
  38.         return 0;
  39. }
  40.  
  41.  
« Última modificación: Octubre 13, 2014, 07:25:04 pm por blackdrake »

Desconectado fermino

  • *
  • Underc0der
  • Mensajes: 330
  • Actividad:
    0%
  • Reputación 1
  • Aprendiz de todo, maestro de nada...
    • Ver Perfil
    • In The Middle Of Knowledge
« Respuesta #1 en: Octubre 13, 2014, 06:55:29 pm »
Supongo que se le asigna cualquier IP que esté asociada con esa computadora, ya ea 127.0.0.1 (localost), la IP privada (Dentro de la LAN), o; si está asignada alguna IP pública, inclusive a esa.
Prueba de conectarte a 127.0.0.1 desde la misma PC; debería funcionar...

La intuición me dice que INADDR_ANY, dice que al servido se le asigna cualquier IP disponible, es decir; que un cliente se puede conectar por cualquier ip que esté relacionada a esa PC (Como explicaba arriba).

Pero no estoy seguro. Nada sé de C.

¿...Alguien...?

EDITO:

Mira esto: No tienes permisos para ver links. Registrate o Entra con tu cuenta.
« Última modificación: Octubre 13, 2014, 07:04:52 pm por fermino »
Visita mi blog: No tienes permisos para ver links. Registrate o Entra con tu cuenta.

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 3346
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon
"ayuda con fruitywifi-karma" no puedo activar el modulo karma.

Iniciado por cristobal92

Respuestas: 4
Vistas: 1175
Último mensaje Agosto 02, 2016, 12:03:45 pm
por cristobal92
[JAVA] Ayuda Sockets en Java

Iniciado por FERNANDX

Respuestas: 1
Vistas: 469
Último mensaje Abril 25, 2018, 08:49:50 pm
por Mortal_Poison
[Ayuda] Crear .zip o .rar de un "archivo"

Iniciado por Zentraedi

Respuestas: 5
Vistas: 1337
Último mensaje Marzo 03, 2017, 02:15:20 pm
por Zentraedi
[SOLUCIONADO] Ayuda Contraseña "Sqlmap"

Iniciado por djtrueno

Respuestas: 1
Vistas: 1252
Último mensaje Enero 17, 2014, 06:07:37 pm
por ANTRAX