socket error
-
Hi Leute,
ich hab wiedermal ein kleines Problem mit den sockets: ich hab ne funktion, da gibt man eine IP ein und die verbindet dann zu dem server(auf meinem pc). Wenn ich schön brav meine IP eingeb klappt das auch. In dem Tutorial aus dem ich die Funktion hab steht aber, dass man auch ne Internet Adresse angeben kann. Das hab ich versucht, da krieg ich aber nen error(fehlercode: 11004, hab ich auch schon gegooglet). Die Funktion sieht folgendermaßen aus:
long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr) { long rc; unsigned long ip; HOSTENT* he; /* Parameter prüfen */ if(hostnameOrIp==NULL || addr==NULL) return SOCKET_ERROR; /* eine IP in hostnameOrIp ? */ ip=inet_addr(hostnameOrIp); /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */ if(ip!=INADDR_NONE) { addr->sin_addr.s_addr=ip; return 0; } else { /* Hostname in hostnameOrIp auflösen */ he=gethostbyname(hostnameOrIp); if(he==NULL) { return SOCKET_ERROR; } else { /*die 4 Bytes der IP von he nach addr kopieren */ memcpy(&(addr->sin_addr),he->h_addr_list[0],4); } return 0; } }wenn ich das ganze so mach, dann klappts:
rc=getAddrFromString("79.207.72.155", &addr);wenn ichs aber so mach, dann gehts nich:
rc=getAddrFromString("www.daniel92.blogdns.com", &addr);Die Internet Adresse ist, wenn ich sie in Firefox angeb, ganz normal erreichbar und ich komm auf die Seite.
Was muss ich tun dass es klappt???
Würde mich über Hilfe freuenMfG Daniel
-
wenn ichs aber so mach, dann gehts nich:
Was bedeutet das? Fehler Meldungen, Error Codes, Return Values????
Simon
-
Versuch's mal so:
bool DNSLookup( LPCSTR cp ) { m_address = 0UL; hostent *he; unsigned long addr = inet_addr( cp ); if( addr == INADDR_NONE ) { if( (he = gethostbyname( cp )) == NULL ) m_iWSA_ErrorCode = WSAGetLastError(); if( !m_iWSA_ErrorCode ) { m_address = *((u_long *) he->h_addr); return( true ); } } else { m_address = addr; return( true ); } return( false ); }Status 11004 kannst du normalerweise unter "Host not found" behandeln.
-
@theta: das programm baut einfach keine verbindung auf, der errorcode is 11004
@EOP:
ich hab das mal so übernommen, wusste nur nicht, was fürn typ m_address sein muss, deshalb hab ichs mal rausgelassen, wenn ichs dann probier, gibt die funktion false zurück
-
unsigned long m_address; int m_iWSA_ErrorCode; bool DNSLookup( LPCSTR cp ) { m_address = 0UL; hostent *he; unsigned long addr = inet_addr( cp ); if( addr == INADDR_NONE ) { if( (he = gethostbyname( cp )) == NULL ) m_iWSA_ErrorCode = WSAGetLastError(); if( !m_iWSA_ErrorCode ) { m_address = *((unsigned long *) he->h_addr); return( true ); } } else { m_address = addr; return( true ); } return( false ); } if( !DNSLookup( "www.daniel92.blogdns.com" ) ) { // m_iWSA_ErrorCode abfragen: // GENERAL FATAL - HOST NOT FOUND case 11001: // Host not found case 11002: // Non-Authoritative Host not found case 11003: // Non-Recoverable errors: // FORMERR, REFUSED, NOTIMP case 11004: // Valid name, no data record of requested ... }struct hostent* FAR gethostbyname( __in [b]const char *name[/b] );
-
ok thx
so hab ichs ausprobiert, der error der ausgegeben wird is wieder 11004
-
killmichnich schrieb:
11004
net helpmsg 11004 schrieb:
Der angeforderte Name ist gültig und wurde in der Datenbank gefunden. Er verfügt
jedoch nicht über die richtigen zugeordneten Daten, die ausgewertet werden soll
ten.
-
lass das www. weg
-
o.O
ich blick zwar nich warum, aber es funktioniert :D:D
danke
-
Nur mal so...
MSDN schrieb:
Note The gethostbyname function has been deprecated by the introduction of the getaddrinfo function. Developers creating Windows Sockets 2 applications are urged to use the getaddrinfo function instead of gethostbyname.