it-swarm.com.de

Lösen Sie den Hostnamen in eine IP-Adresse auf

Ich habe eine Client/Server-Simulationsanwendung entwickelt. Ich habe Client und Server auf zwei verschiedenen Windows XP) - Computern bereitgestellt. Irgendwie kann der Client keine Anforderungen an den Server senden.

Ich habe folgende Optionen ausprobiert:

  1. Ping-Server erfolgreich vom Client mit IP-Adresse.

  2. Ping des Client-Rechners erfolgreich vom Server unter Verwendung der IP-Adresse.

  3. Überprüftes Netstat-Kommandozeilen-Tool von beiden Rechnern. Der Server befindet sich im Modus LISTENING und der Client befindet sich im Modus SYS_SENT Modus. Die fremde Adresse, die zum Senden verwendet wird, ist jedoch der Hostname und nicht die IP-Adresse.

  4. Ping des Servercomputers mit dem Hostnamen vom Client fehlgeschlagen.

  5. Ping des Clientcomputers erfolgreich unter Verwendung des Hostnamens vom Server.

Ich denke, das Problem ist, wenn der Client versucht, eine Verbindung zum Server unter Verwendung des Hostnamens herzustellen.

Können Sie mir bitte mitteilen, wie Sie eine Anwendung zwingen können, eine IP-Adresse anstelle eines Hostnamens zu verwenden? Gibt es eine andere Möglichkeit, den Hostnamen einer IP-Adresse zuzuordnen?

36
Mahesh

Gehen Sie zu Ihrem Client-Computer und geben Sie Folgendes ein:

nslookup server.company.com

ersetzen Sie natürlich server.company.com durch den tatsächlichen Hostnamen Ihres Servers.

Das sollte Ihnen sagen, welchen DNS-Server Ihr Client verwendet (falls vorhanden) und was er für ein Problem mit dem Namen hält.

Um zu erzwingen, dass eine Anwendung eine IP-Adresse verwendet, konfigurieren Sie diese im Allgemeinen so, dass die IP-Adresse anstelle eines Hostnamens verwendet wird. Wenn der Hostname fest codiert ist oder die Anwendung darauf besteht, einen Hostnamen anstelle einer IP-Adresse zu verwenden (wie einer Ihrer anderen Kommentare zu zeigen scheint), haben Sie dort wahrscheinlich Pech.

Sie können jedoch die Art und Weise ändern, wie die meisten Computer die Hostnamen auflösen, z. B. mit /etc/resolv.conf Und /etc/hosts Auf UNIXy-Systemen und eine lokale Hostdatei unter Windows-y systeme.

53
paxdiablo

Versuchen Sie es mit tracert, um den Hostnamen aufzulösen. IE Sie haben Ip-Adresse 8.8.8.8, also würden Sie verwenden; tracert 8.8.8.8

4
IT wannabe

Dies ist schwer zu beantworten, ohne näher auf die Netzwerkarchitektur einzugehen. Einige Dinge zu untersuchen sind:

  • Ist es möglich, dass sich Client und/oder Server hinter einem NAT Gerät, einer Firewall oder ähnlichem befinden?
  • Handelt es sich bei einer der IP-Adressen um eine "lokale" Adresse wie 192.168.x.y oder 10.x.y.z?
  • Was sind die Host-Namen, sind es "echte" DNS: fähige Namen oder etwas lokaleres und/oder Windows-spezifischeres?
  • Wie sucht der Client den Server? Es muss eine Stelle im Code oder in den Konfigurationsdaten geben, die den Hostnamen enthält. Verwenden Sie stattdessen einfach die dort angegebene IP, wenn Sie die Suche vermeiden möchten.
0
unwind

Windows XP hat die Windows-Firewall, die den Netzwerkverkehr stören kann, wenn sie nicht richtig konfiguriert ist. Sie können die Windows-Firewall deaktivieren, wenn Sie über Administratorrechte verfügen, indem Sie über die Systemsteuerung auf das Windows-Firewall-Applet zugreifen Wenn Ihre Anwendung mit deaktivierter Windows-Firewall funktioniert, liegt das Problem wahrscheinlich an den Einstellungen der Firewall.

Wir haben eine Anwendung, die auf mehreren PCs ausgeführt wird, die über UDP/IP kommunizieren, und wir haben Experimente durchgeführt, damit die Anwendung auf einem PC mit einem Benutzer ohne Administratorrechte ausgeführt werden kann. Damit unsere Anwendung zwischen mehreren PCs kommunizieren kann, mussten wir ein Administratorkonto verwenden, um die Einstellungen der Windows-Firewall zu ändern.

In unserer Anwendung wird ein PC als Server festgelegt und die anderen sind Clients in einer Server-/Client-Gruppe, und möglicherweise befinden sich mehrere Gruppen im selben Subnetz.

Die erste Änderung bestand darin, mithilfe der Funktionen auf der Registerkarte Ausnahmen des Windows-Firewall-Applets eine Ausnahme für den Port zu erstellen, den wir für die Kommunikation verwenden.

Wir verwenden die Hostnamensuche, damit die Clients ihren zugewiesenen Server unter Verwendung des Computernamens finden können, der aus einem mnemonischen Präfix mit einem Bindestrich gefolgt von einer zugewiesenen Terminalnummer (z. B. SERVER100-1) besteht. Auf diese Weise können mehrere Server mit ihren zugewiesenen Clients im selben Subnetz koexistieren. Der Client verwendet sein Präfix, um den Computernamen für den zugewiesenen Server zu generieren und anschließend mithilfe der Hostnamensuche die IP-Adresse des zugewiesenen Servers zu ermitteln.

Wir haben festgestellt, dass die Suche nach dem Hostnamen unter Verwendung des Computernamens (zugewiesen über die Registerkarte Computername im Dialogfeld Systemeigenschaften) nur funktioniert, wenn auf dem Windows-Firewall des Server-PCs der Anschluss für den Datei- und Druckerfreigabedienst aktiviert ist.

Wir mussten also zwei Änderungen vornehmen: (1) eine Ausnahme für den für die Kommunikation verwendeten Port einrichten und (2) den Datei- und Druckerdienst auf der Registerkarte Ausnahmen aktivieren, um die Suche nach Hostnamen zu ermöglichen.

** EDIT **

Möglicherweise finden Sie auch diese Microsoft Knowledge Base-Artikel hilfreich unter Windows XP Netzwerk .

Und siehe dazu Artikel zur NETBIOS-Namensauflösung unter Windows .

0

Sie können eine C-Funktion getaddrinfo () verwenden, um die numerische Adresse abzurufen - sowohl ipv4 als auch ipv6. Siehe den Beispielcode hier

0
Sathya