Finden Sie den DNS-Hostnamen von der IP-Adresse im LAN
Hey alle. Ich habe ein Programm geschrieben, dass sequenziell durchsucht, bestimmte Teile eines LAN für Computer (code wird bereitgestellt). Allerdings, wenn ich diesen code ausführen, es gibt nur den DNS-Hostnamen des Computers, auf dem es läuft. Ich sah in mit WMI, aber ich kann nicht, da ich nicht immer Privilegien auf den Computern gefunden wurde. Gibt es eine andere Möglichkeit zu finden, einen lokalen Computer HostName?
using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
namespace CheckLocalNetwork
{
class PingCheck
{
public static string fullip;
public void CheckSequentialIP()
{
IPHostEntry IpEntry = Dns.GetHostEntry(fullip);
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
options.DontFragment = true;
string data = "a";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 120;
PingReply reply = pingSender.Send(fullip, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine("Address: {0}", reply.Address.ToString());
Console.WriteLine("Host Name: {0}", IpEntry.HostName);
Console.WriteLine("RoundTrip time: {0}", reply.RoundtripTime);
Console.WriteLine("Time to live: {0}", reply.Options.Ttl);
Console.WriteLine("Don't fragment: {0}", reply.Options.DontFragment);
Console.WriteLine("Buffer size: {0}", reply.Buffer.Length);
Console.WriteLine("");
}
}
static void Main(string[] args)
{
Console.WriteLine("Press enter to search for ip adresses that begin with 192.168.1");
Console.ReadLine();
for (int endofip = 1; endofip < 101; endofip++)
{
fullip = "192.168.1." + Convert.ToString(endofip);
PingCheck checkfullip = new PingCheck();
checkfullip.CheckSequentialIP();
}
Console.ReadLine();
}
Alle Hilfe wird sehr geschätzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hmm - dein Codebeispiel verhält sich wie erwartet auf meine Maschine, d.h. es gibt den Hostnamen der Maschine gescannt.
Untersuchen Ihr problem tiefer, haben Sie versucht, mit nslookup überprüfen Sie die ip-Adressen beheben?
Wenn dies nicht wieder den Namen der Maschine, dann haben Sie möglicherweise ein Problem mit der Namensauflösung, die nicht im Zusammenhang mit Ihrem code.
Wenn das alles ok aussieht, dann könnte es sich auch lohnen, die Aufzählung der
IpEntry.Aliases
Sammlung. Gibt es irgendwelche Einträge hier, und machen Sie Sinn?Schließlich ist der code, den Sie vor genau den code, werde für Sie falsch, oder ist es ein "destilliertes" Beispiel? Der Grund warum ich Frage ist, dass die Unterlagen für
Dns.GetHostEntry
StaatenIch auch feststellen, halten Sie "fullip" in eine statische. Ist dies nicht der exakte code, der das problem verursacht, vor allem, wenn diese läuft multithreaded, ist es eine chance, Sie sind nicht initialisieren "fullip" vor der
Dns.GetHostEntry
genannt wird?Ich kann Weg, aber ich dachte, war es Wert, dass ein Gehirn-dump -, was kam mir als ich sah bei deinem problem 🙂
[EDIT:] - dein Kommentar zu kdt klargestellt hat, etwas, das ich falsch verstanden. Ich dachte Sie sagten, Sie immer wieder den Hostnamen Ihres lokalen Maschine, egal welche Maschine Sie "gescannt", was sehr seltsames Verhalten. In der Tat ich denke, Sie sagen, Sie haben gerade wieder IP-Adressen für andere Maschinen (IP-Adresse), und nur einen Hostnamen für Ihren lokalen. Ignorieren Sie meine Letzte bit über das threading und die leeren argument.
Dies ist weit mehr leicht zu erklären - Ihre Maschine ist fast sicher nur nicht in der Lage, zu beheben die Maschine Namen - ich erwarte, dass meine nslookup-test, den ich vorgeschlagen, wird nicht wieder die Maschine Namen entweder.
Damit beheben Sie diese IP-Adressen zu host-Namen, Ihre Maschine muss über eine DNS Einträge für diese Maschinen, oder haben diese in seiner lokalen hosts-Datei, deine Maschine ist nicht wirklich Fragen der remote-Maschine, die für seinen Namen, wenn Sie dazu anrufen, so dass es gewann'; t werden in der Lage, um es herauszufinden, ohne Hilfe von einem seiner üblichen Namensauflösung Pfade.
Es funktioniert für mich, weil meine lokalen DNS-wirklich-Einträge für alle Rechner in meinem Netzwerk, die Lösung, die Ihre host-Namen zu ip-Adressen und Umgekehrt.