gethostbyname in C
Ich weiß nicht, wie, um Anwendungen zu schreiben in C, aber ich brauche ein kleines Programm gebastelt, dass funktioniert:
lh = gethostbyname("localhost");
output = lh->h_name;
output-Variablen ausgedruckt werden.
Der obige code wird in PHP MongoDB-Datenbank-Treiber", um den Hostnamen des Rechners (hostname ist Teil einer Eingabe zu generieren, die eine eindeutige ID). Ich bin skeptisch, dass dies die Rückkehr der hostname, also würde ich gerne einen Beweis.
Alle code-Beispiele wäre sehr hilfreich.
Happy day.
InformationsquelleAutor Matic | 2010-05-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht eine sehr zuverlässige Art und Weise der Ermittlung der Hostnamen, wenn es manchmal Arbeit. (was es gibt hängt davon ab, wie
/etc/hosts
eingerichtet ist). Wenn Sie eine Zeile wie:...dann wird es wieder "foobar". Wenn Sie es anders herum, aber das ist auch üblich, dann wird es einfach nur wieder "localhost". Eine zuverlässigere Möglichkeit ist die Verwendung der
gethostname()
Funktion:sizeof(hostname) -1
als Länge zugethostname()
. Andernfalls könnten Sie am Ende ohne null-Terminierung wenn das abschneiden Auftritt. Laut meiner manpage: "POSIX.1 sagt, dass, wenn eine solche Kürzung erfolgt, dann ist es nicht spezifiziert, ob der zurückgegebene Puffer enthält eine abschließende null-byte."Danke, behoben.
InformationsquelleAutor caf
In C/UNIX, das äquivalent wäre so etwas wie:
und der Beweis, dass es funktioniert:
Aber versuchen Sie es selbst. Vorausgesetzt, Sie haben die richtige Umgebung, sollte es in Ordnung sein.
InformationsquelleAutor paxdiablo
was ist falsch?
Gelhar: localhost nicht einen Namen des Computers. localhost wird auf 127.0.0.1, aber es gibt keine zurück-Konvertierung. en.wikipedia.org/wiki/Localhost
richtig, aber der Punkt ist, dass, wenn /etc/hosts sieht aus wie
127.0.0.1 realname.com localhost
danngethostbyname("localhost")
zurück "realname.com" in h_name, aber wenn die Reihenfolge Umgekehrt, es wird wieder "localhost" (siehe caf s Antwort).InformationsquelleAutor Andrey