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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con winsock
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con winsock  (Leído 3,006 veces)
тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Problema con winsock
« en: 19 Octubre 2010, 21:51 pm »

Bueno es raro esto que me pasa, llevo algo winsock y miren que pasa cuando ejecuto este code:


Código
  1. #include <winsock2.h>
  2. #include <stdio.h>
  3.  
  4. /*Winsock library linked  :)*/
  5. #pragma comment(lib,"ws2_32.lib")
  6.  
  7. int main()
  8. {
  9.   WSADATA wsa;
  10.   SOCKET sock;
  11.   struct sockaddr_in local;
  12.   struct hostent *direc;
  13.   int len=0;
  14.   char Buffer[1024];
  15.  
  16.   //Determinamos la versión, en este caso la 2.0
  17.   WSAStartup(MAKEWORD(2,0),&wsa);
  18.  
  19.   //Creamos el socket
  20.   sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  21.   direc=gethostbyname("www.google.es");
  22.   printf("%s",*direc);
  23. }
  24.  

Imprimo el puntero a la estructura hostent y sale esto:

Citar

Ahora probaré a cambiar la estructura direc por esta:

Código:
direc=gethostbyname("www.facebook.com");

Y sale todo como debería salir.

¿alguna causa?  ;D


En línea

16BITBoy

Desconectado Desconectado

Mensajes: 137


En mi pompa..


Ver Perfil WWW
Re: Problema con winsock
« Respuesta #1 en: 19 Octubre 2010, 22:39 pm »

Si no me equivoco, prueba a hacerle el gethostbyname a esa dirección que te sale, y saldrá lo que tiene que salir, y sino vuelve a intentar con lo que te de :D

Es algo relacionado con DNS, nombres canónicos creo que se le llamaba.


En línea

Blog personal: http://www.16bitboy.com/blog

- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos!
- Bender, solo fue una pesadilla, no existe eso que llamas "dos".
тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: Problema con winsock
« Respuesta #2 en: 19 Octubre 2010, 22:52 pm »

Bueno es lo que me suponía redirecciones y DNS cosas que van fuera de mi dominio jajajjaa
En línea

☺BADMAN

Desconectado Desconectado

Mensajes: 51


Este es un Moderador de CPH


Ver Perfil
Re: Problema con winsock
« Respuesta #3 en: 23 Octubre 2010, 04:08 am »

aqui te dejo algo que te pueda funcionar:

 bool RastrearDominio(char*IP, char* Dominio, int Port)
{
 char IPD[20]=" ";
 in_addr *o;
 hostent* hp;
 hp = gethostbyname(Dominio);
 sprintf(IPD,"%s", inet_ntoa(*( (struct in_addr *)hp->h_addr)));
if( P2P->EsacnearIPX(IPD,Port))
 {
 
  strcpy(IP,IPD);
  return true;
 }
 else
  strcpy(IP,"NULL");
 
return false;
}

  gethostbyname debuelve un estrcuct tipo hosten no un LPCSTR y P2P->EscanearIPx(IPD,Port) es un code extraño que quien sabe que hace XD
En línea

Experto en Biefrost.
Subseven User.
Especialista en crypters.
Tifa FAN
Batch Programer XD ;D
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: Problema con winsock
« Respuesta #4 en: 23 Octubre 2010, 07:56 am »

Imprimo el puntero a la estructura hostent y sale esto:

Citar

Ahora probaré a cambiar la estructura direc por esta:

Código:
direc=gethostbyname("www.facebook.com");

Y sale todo como debería salir.

¿alguna causa?  ;D

Solo modifique un poco respecto a tu codigo para que muestre lo que quieres (segun entendí):

Código
  1. #include <winsock2.h>
  2. #include <stdio.h>
  3.  
  4. /*Winsock library linked  :)*/
  5. #pragma comment(lib,"ws2_32.lib")
  6.  
  7. int main()
  8. {
  9.   WSADATA wsa;
  10.   SOCKET sock;
  11.   struct sockaddr_in local;
  12.   struct hostent *direc;
  13.   int len=0;
  14.   char Buffer[1024];
  15.  
  16.   //Determinamos la versión, en este caso la 2.0
  17.   WSAStartup(MAKEWORD(2,0),&wsa);
  18.  
  19.   //Creamos el socket
  20.   sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  21.   direc=gethostbyname("www.google.es");
  22.   memset(&local,0,sizeof(local));
  23.   memcpy(&local.sin_addr,direc->h_addr,direc->h_length);
  24.   local.sin_family = direc->h_addrtype;
  25.   local.sin_port= htons(80);  
  26.   printf("%s",inet_ntoa(local.sin_addr));
  27.   getchar();
  28. }
  29.  

Pero hay varios errores, comienza viendo algunos ejemplos basicos del tema, luego hay que comprobar los valores retornados para diagnosticar fallas en cada paso que realiza el programa y otras cosas mas...
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: Problema con winsock
« Respuesta #5 en: 24 Octubre 2010, 08:12 am »

aqui te dejo algo que te pueda funcionar:

 bool RastrearDominio(char*IP, char* Dominio, int Port)
{
 char IPD[20]=" ";
 in_addr *o;
 hostent* hp;
 hp = gethostbyname(Dominio);
 sprintf(IPD,"%s", inet_ntoa(*( (struct in_addr *)hp->h_addr)));
if( P2P->EsacnearIPX(IPD,Port))
 {
 
  strcpy(IP,IPD);
  return true;
 }
 else
  strcpy(IP,"NULL");
 
return false;
}

  gethostbyname debuelve un estrcuct tipo hosten no un LPCSTR y P2P->EscanearIPx(IPD,Port) es un code extraño que quien sabe que hace XD
Debes saberlo tu,¿no?

Imprimo el puntero a la estructura hostent y sale esto:

Citar

Ahora probaré a cambiar la estructura direc por esta:

Código:
direc=gethostbyname("www.facebook.com");

Y sale todo como debería salir.

¿alguna causa?  ;D

Solo modifique un poco respecto a tu codigo para que muestre lo que quieres (segun entendí):

Código
  1. #include <winsock2.h>
  2. #include <stdio.h>
  3.  
  4. /*Winsock library linked  :)*/
  5. #pragma comment(lib,"ws2_32.lib")
  6.  
  7. int main()
  8. {
  9.   WSADATA wsa;
  10.   SOCKET sock;
  11.   struct sockaddr_in local;
  12.   struct hostent *direc;
  13.   int len=0;
  14.   char Buffer[1024];
  15.  
  16.   //Determinamos la versión, en este caso la 2.0
  17.   WSAStartup(MAKEWORD(2,0),&wsa);
  18.  
  19.   //Creamos el socket
  20.   sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  21.   direc=gethostbyname("www.google.es");
  22.   memset(&local,0,sizeof(local));
  23.   memcpy(&local.sin_addr,direc->h_addr,direc->h_length);
  24.   local.sin_family = direc->h_addrtype;
  25.   local.sin_port= htons(80);  
  26.   printf("%s",inet_ntoa(local.sin_addr));
  27.   getchar();
  28. }
  29.  

Pero hay varios errores, comienza viendo algunos ejemplos basicos del tema, luego hay que comprobar los valores retornados para diagnosticar fallas en cada paso que realiza el programa y otras cosas mas...

Gracias
En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


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


Ver Perfil WWW
Re: Problema con winsock
« Respuesta #6 en: 24 Octubre 2010, 14:26 pm »

Al que no lo entiende, www.l.google.com redirecciona a www.google.es porque www.l.google.com es en realidad www.google.es xD!!!
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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines