Autor
|
Tema: Problema con winsock (Leído 3,010 veces)
|
тαптяα
Desconectado
Mensajes: 1.151
Sic utere tuo ut alienum non laeda
|
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"); }
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?
|
|
|
En línea
|
|
|
|
16BITBoy
Desconectado
Mensajes: 137
En mi pompa..
|
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 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
Mensajes: 1.151
Sic utere tuo ut alienum non laeda
|
Bueno es lo que me suponía redirecciones y DNS cosas que van fuera de mi dominio jajajjaa
|
|
|
En línea
|
|
|
|
☺BADMAN
Desconectado
Mensajes: 51
Este es un Moderador de CPH
|
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
|
|
|
43H4FH44H45H4CH49H56H45H
Wiki
Desconectado
Mensajes: 502
|
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...
|
|
|
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
Mensajes: 1.151
Sic utere tuo ut alienum non laeda
|
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
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
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
|
|
|
|
|