Bueno es raro esto que me pasa, llevo algo winsock y miren que pasa cuando ejecuto este code:
#include <winsock2.h>
#include <stdio.h>
/*Winsock library linked :)*/
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsa;
SOCKET sock;
struct sockaddr_in local;
struct hostent *direc;
int len=0;
char Buffer[1024];
//Determinamos la versión, en este caso la 2.0
WSAStartup(MAKEWORD(2,0),&wsa);
//Creamos el socket
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
direc=gethostbyname("www.google.es");
printf("%s",*direc);
}
Imprimo el puntero a la estructura hostent y sale esto:
Citarwww.l.google.com
Ahora probaré a cambiar la estructura direc por esta:
direc=gethostbyname("www.facebook.com");
Y sale todo como debería salir.
¿alguna causa? ;D
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.
Bueno es lo que me suponía redirecciones y DNS cosas que van fuera de mi dominio jajajjaa
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 (http://www.denunciando.com/images/icons/pixelSHERLOCK_finished.gif)
Cita de: ハセヲ, en 19 Octubre 2010, 21:51 PMImprimo el puntero a la estructura hostent y sale esto:
Citarwww.l.google.com
Ahora probaré a cambiar la estructura direc por esta:
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í):
#include <winsock2.h>
#include <stdio.h>
/*Winsock library linked :)*/
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsa;
SOCKET sock;
struct sockaddr_in local;
struct hostent *direc;
int len=0;
char Buffer[1024];
//Determinamos la versión, en este caso la 2.0
WSAStartup(MAKEWORD(2,0),&wsa);
//Creamos el socket
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
direc=gethostbyname("www.google.es");
memset(&local,0,sizeof(local));
memcpy(&local.sin_addr,direc->h_addr,direc->h_length);
local.sin_family = direc->h_addrtype;
local.sin_port= htons(80);
printf("%s",inet_ntoa(local.sin_addr));
getchar();
}
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...
Cita de: ☺BADMAN 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 (http://www.denunciando.com/images/icons/pixelSHERLOCK_finished.gif)
Debes saberlo tu,¿no?
Cita de: 43H4FH44H45H4CH49H56H45H en 23 Octubre 2010, 07:56 AM
Cita de: ハセヲ, en 19 Octubre 2010, 21:51 PMImprimo el puntero a la estructura hostent y sale esto:
Citarwww.l.google.com
Ahora probaré a cambiar la estructura direc por esta:
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í):
#include <winsock2.h>
#include <stdio.h>
/*Winsock library linked :)*/
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsa;
SOCKET sock;
struct sockaddr_in local;
struct hostent *direc;
int len=0;
char Buffer[1024];
//Determinamos la versión, en este caso la 2.0
WSAStartup(MAKEWORD(2,0),&wsa);
//Creamos el socket
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
direc=gethostbyname("www.google.es");
memset(&local,0,sizeof(local));
memcpy(&local.sin_addr,direc->h_addr,direc->h_length);
local.sin_family = direc->h_addrtype;
local.sin_port= htons(80);
printf("%s",inet_ntoa(local.sin_addr));
getchar();
}
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
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!!!