Γιώργο, πες μου τί θέλεις να κάνεις για να μπορέσω να σου απαντήσω. Αυτή τη στιγμή δεν έχω καταλάβει. Θέλεις να μάθεις ποιά είναι όλα τα δηλωμένα μηχανήματα στο domain, ποιά είναι τα ενεργά μηχανήματα ή ποιοί έχουν συνδεθεί στο server σου? Ή κάτι άλλο?
Όσον αφορά το host, αυτό είναι θέμα ορολογίας του DNS. Host είναι ένα οποιοδήποτε μηχάνημα. Host name είναι το όνομα του μηχανήματος όπως αυτό έχει δηλωθεί στο DNS. Ένα μηχάνημα μπορεί να έχει 1 ή περισσότερες IP διευθύνεις. Το DNS κρατάει ποιά ονόματα αντιστοιχούν σε ποιά διεύθυνση. Μπορείς να βρεις αυτή την αντιστοιχία εκτελώντας την εντολή nslookup από ένα command prompt. Η Dns.GetHostByName ουσιαστικά σου επιστρέφει όλα τα IP addresses για ένα συγκεκριμένο όνομα.
Οι εγγραφές του DNS δεν διαγράφονται πάντα όταν κλείσει ένα μηχάνημα. Κάποιες τις βάζει ο administrator και διαγράφονται από αυτόν. Κάποιες δημιουργούνται αυτόματα όταν συνδέεται ένα μηχάνημα στο δίκτυο (μέσω του DHCP) και διαγράφονται μετά από κάποιες ημέρες. Ένας DNS server μπορεί να σου δώσει πληροφορίες για όλα τα μηχανήματα που έχουν δηλωθεί σε ένα δίκτυο, αλλά θα περιέχει και πολλά επιπλέον στοιχεία, καθώς όλα τα μηχανήματα (και οι εκτυπωτές!) έχουν εγγραφή στο DNS.
Η κλάση System.Net.Dns σου επιτρέπει να βρεις ποιά ονόματα αντιστοιχούν σε ένα IP και το αντίστροφο, δεν σου επιστρέφει τον κατάλογο όλων των μηχανών.
Αν θέλεις να δεις τον κατάλογο των μηχανών, θα πρέπει να κοιτάξεις το Active Directory και τις κλάσεις του System.DirectoryServices. Για παράδειγμα, μπορείς να χρησιμοποιήσεις την DirectorySearcher για να δεις ποιά μηχανήματα είναι δηλωμένα στο domain.
DirectorySearcher searcher=new DirectorySearcher("LDAP://DC=MYCOMPANY,DC=COM");
searcher.Filter="(objectClass=computer)";
foreach(SearchResult result in searcher.FindAll())
{
WL(result.GetDirectoryEntry().Name);
}
Για να τρέξει αυτός ο κώδικας χρειάζεται το μηχάνημα σου να είναι στο domain και το account σου να έχει τα κατάλληλα permissions για να μπορέσει να διαβάσει τη λίστα από τον domain controller.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos