GetHostName

illaX

Erfahrenes Mitglied
Hi,

ich habe die IP und moechte den Rechnernamen beziehen. Habe die Funktion GetHostName gefunden, aber die bezieht ja nur den lokalen Rechnernamen oder

Gibt es noch eine andere Funktion? Habe noch GetHostNameEx gefunden, aber keine eindeutigen Informationen was die bewirkt.

Habe leider nicht viel mit C++ am Hut.

Vielen Dank fuer Hilfe.
 
Versuch mal gethostbyname aus der WinSock. Du bekommst da ein LPHOSTENT zurück in dem die IP eingetragen ist:

LPHOSTENT lpHostEntry = gethostbyname( szIPAddress );
if ( lpHostEntry == NULL )
{
// nicht gefunden
return false;
}
unsigned long* pIPAddress = (unsigned long FAR *)lpHostEntry->h_addr;
unsigned long ulIPAddress = *pIPAddress;

ulIPAddress enthält jetzt die IP als 32bit-Wert.
 
OK vielen Dank du hast mich zum Ziel gebracht.

Heir mal meine Funktion: Achtung JNI
Code:
JNIEXPORT jstring JNICALL Java_snt_utils_jni_FunctionJNI_getHostName
(JNIEnv *env, jobject object, jstring strIP) {

	if(strIP == NULL)
		return env->NewStringUTF(NULL);
	
	const char *str = env->GetStringUTFChars(strIP, NULL);
	string buf = str;

	const char* cIP = buf.c_str();

	env->ReleaseStringUTFChars(strIP, str);

	WSAData wData;

	if (WSAStartup(MAKEWORD(2,2), &wData) == SOCKET_ERROR) {
		return env->NewStringUTF("1");
	}

	hostent *h = NULL;

	unsigned int addr;
	addr = inet_addr(cIP);

	h = gethostbyaddr(reinterpret_cast<char *>(&addr), 4, AF_INET);
	if (h == NULL) {
		return env->NewStringUTF("2");
	} else {
		string host = h->h_name;
		return env->NewStringUTF(h->h_name);
	}
}
 
Zurück