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:
Ahora probaré a cambiar la estructura direc por esta:
direc=gethostbyname("www.facebook.com");
Y sale todo como debería salir.
¿alguna causa?
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)); }
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