Auflösung IP->Hostname mit MFC!

Hallo!

Kann mir jemand einen Tipp geben, wie ich es mit der MFC anfange eine bestimmte IP-Adresse nach dem Hostnamen aufzulösen?

Für Hinweise wäre ich dankbar und vergebe natürlich für jeden guten Hinweis auch Sterne (versteht sich)! :wink:

Cu

Hydron

Hallo Hydron!

Es gibt viele Wege nach Rom, aber nicht immer ist die MFC eine mögliche! Mit Hilfe der MFC kenne ich keinen Weg einen Hostname in eine IP umzuwandeln, jedoch existiert eine Möglichkeit anhand der Winsock-Funktionen gethostbyaddr und gethostbyname. Wie man sich unschwer vorstellen kann, benötigt die eine die IP-Addr, die Andere den Namen des Hosts. Die Definitionen der beiden Funktionen:

_struct HOSTENT FAR * gethostbyaddr (
const char FAR * addr,
int len,
int type
);

Parameters:

addr: A pointer to an address in network byte order.
len: The length of the address.
type: The type of the address.

struct hostent FAR * gethostbyname (
const char FAR * name
);

Parameters:

name: A pointer to the null-terminated name of the host to resolve._

Wie man nun erkennen kann, liefern beide Funktionen einen Pointer auf einen Struktur zurück, die wie folgt definiert ist:

_struct hostent {
char FAR * h_name;
char FAR * FAR * h_aliases;
short h_addrtype;
short h_length;
char FAR * FAR * h_addr_list;
};

Members:

h_name:
Official name of the host (PC).If using the DNS or similar resolution system, it is the Fully Qualified Domain Name (FQDN) that caused the server to return a reply. If using a local „hosts“ file, it is the first entry after the IP address.

h_aliases:
A NULL-terminated array of alternate names.

h_addrtype:
The type of address being returned.

h_length:
The length, in bytes, of each address.

h_addr_list:
A NULL-terminated list of addresses for the host. Addresses are returned in network byte order. The macro h_addr is defined to be h_addr_list[0] for compatibility with older software._

Diese Funtionen nun anzuwenden, dürfte kein Problem mehr sein. Wer sich jedoch schon stark an die Klassen-orientierte MFC gewöhnt hat, und auch Klassen verwenden will, der sollte sich Inside Visual C++ kaufen und die dort selfmade-Klasse CBlockingSocket (CSocket-MFC-Ersatz) verwenden. In dieser Klasse sind 2 statische Methoden, GetHostByAddr und GetHostByName definiert, welche wiederum die Winsock-Funktionen aufrufen, nur komfortabler zu verwenden sind.

Ich hoffe, ich konnte helfen,
KoRn!