Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

ip address client C#

Îåêßíçóå áðü ôï ìÝëïò gpal. Τελευταία δημοσίευση από το μέλος Johnnyxp64 στις 29-09-2009, 14:00. Υπάρχουν 14 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  29-09-2009, 11:10 54061

    ip address client C#

    Καλημέρα σας κύριοι.

    Εδώ στην εταιρεία που είμαι, θελουν να τους φτιάξω μια εφαρμογή (applicationform), όπου πατώντας ένα κουμπί (πέρα από τη χοντρή), να τους εμφανίζει όλες τις ip των ενεργών client που είναι συνδεδεμένα στο δίκτυο. Κακά τα ψέματα οι γνώσεις μου από δίκτυα, δυστυχώς ελλάχτιστες - απειρο... Τι θα χρειαστεί να γνωρίζω αν μπορεί κάποιος να μου το εξιστορήσει σα παραμύθι :) , και πως υλοποιείται αυτό το πραγματάκι? :)) ... Μιλάμε πάντα για C#.

    giorgos

  •  29-09-2009, 11:46 54064 σε απάντηση της 54061

    Απ: ip address client C#


    hi and welcome.

    έκανες καθολου γοογλαρισμα? Stick out tongue

    να παρεις 1 Ip ειναι εύκολο να παρεις ολες τις ενεργες απο ενα δικτυο lan δεν το εχω κανει, αλλα με ενα πολυ προχειρο googlarisma βρηκα αυτο καντο σε c# CONVERTER

    δεν το δοκιμασα αν παιζει...try it νομιζω θα σου κανει.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    The following code sample shows how to get all IP address on a LAN network
    Must have a reference to System.Net.DLL in your reference list. 
    
    Imports System.Net 
    
    Public Shared Function GetAllIP(Optional ByVal args As String() = Nothing) As Integer
    'args in the signature is optional, without it
    'the function will simply get the hostname
    'of the local machine then go from there
    Dim strHostName As New String("")
    If args.Length = 0 Then
    ' Getting Ip address of local machine...
    ' First get the host name of local machine.
    strHostName = DNS.GetHostName()
    Console.WriteLine("Local Machine's Host Name: " + strHostName)
    Else
    strHostName = args(0)
    End If
    
    ' Then using host name, get the IP address list..
    Dim ipEntry As IPHostEntry = DNS.GetHostByName(strHostName)
    Dim addr As IPAddress() = ipEntry.AddressList
    
    Dim i As Integer = 0
    While i < addr.Length
    Console.WriteLine("IP Address {0}: {1} ", i, addr(i).ToString())
    System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
    End While
    Return 0
    End Function


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  29-09-2009, 12:03 54065 σε απάντηση της 54064

    Απ: ip address client C#

    Αδερφέ μου εψαξα και στο google αλλά έβρισκα μεμονωμένα πράγματα. Θα ζορίσω λίγο αυτό που μου έστειλες. Ευχαριστώ. Θα σε κρατήσω ενήμερω :)

  •  29-09-2009, 12:17 54067 σε απάντηση της 54064

    Απ: ip address client C#

    Φίλε μου σε υπερευχαριστώ!!!!!!!!!!!!!!!!

    Γιώργος :-)

  •  29-09-2009, 12:36 54069 σε απάντηση της 54067

    Απ: ip address client C#

    you are welcomei am glad i could help.Wink

    μονο ξανα ορισε την απαντηση "ως απαντηση" γιατι εκανα καποιες διορθώσεις και τωρα φαινεται ως μη απαντημένο το θεμα σου.


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  29-09-2009, 12:41 54070 σε απάντηση της 54067

    Απ: ip address client C#

    Γιώργο, θα πρότεινα να προσέξεις τον κώδικα που σου έδωσε ο Johnny, καθώς περιέχει μερικά περίεργα, όπως το πέρασμα του hostname ως args και  το Interlock.Increment. Αντί γι αυτό, θα πρότεινα να κοιτάξεις το sample του documentation της μεθόδου IPHostEntry.AddressList:

    C# Copy Code    public void GetIpAddressList(String hostString)
       {
           try 
           {
               // Get 'IPHostEntry' object containing information like host name, IP addresses, aliases for a host.
               IPHostEntry hostInfo = Dns.GetHostByName(hostString);
               Console.WriteLine("Host name : " + hostInfo.HostName);
               Console.WriteLine("IP address List : ");
               for(int index=0; index < hostInfo.AddressList.Length; index++)
               {
                   Console.WriteLine(hostInfo.AddressList[index]);
               }
           }
           catch(SocketException e) 
           {
               Console.WriteLine("SocketException caught!!!");
               Console.WriteLine("Source : " + e.Source);
               Console.WriteLine("Message : " + e.Message);
           }
           catch(ArgumentNullException e)
           {
               Console.WriteLine("ArgumentNullException caught!!!");
               Console.WriteLine("Source : " + e.Source);
               Console.WriteLine("Message : " + e.Message);
           }
           catch(Exception e)
           {
               Console.WriteLine("Exception caught!!!");
               Console.WriteLine("Source : " + e.Source);
               Console.WriteLine("Message : " + e.Message);
           }
       }

     

    Γενικά, καλό είναι να καταλαβαίνουμε τί κάνει κάποιος κώδικας προτού τον προτείνουμε. Μπορεί να περιέχει επικίνδυνα φίδια.

    Όπως και να έχει, ο κώδικας αυτός, όπως και ο κώδικας που έδωσε ο Johnny μετά τις διορθώσεις, επιστρέφουν τα IP addresses ενός μηχανήματος και μόνο, όχι τα IPs όλων των μηχανημάτων του δικτύου, ή τα IPs των clients που έχουν συνδεθεί σε κάποιο server. Γιώργο, τί ακριβώς θέλεις να κάνεις?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  29-09-2009, 12:50 54071 σε απάντηση της 54070

    Απ: ip address client C#

    Παναγιώτη καλημέρα και σε ευχαριστω για την ανταποκρισή σου.

    Δηλαδή μπορώ εγώ να πάρω τα ονόματα όλων των clients ή hosts (εννοώ τα ονόματα των υπολογιστών) που είναι σε ένα συγκεκριμένο domain? Δηλαδή να του λέω φέρε μου τα ονόματα και τις ip από όλα τα μηχανάκια που είναι στο συγκεκριμένο domain???????!!!!!!!!!!!!!! Ασφαλώς αν κάποια είναι κλειστά θα επιστρέφει μάλλον Null.

  •  29-09-2009, 12:53 54072 σε απάντηση της 54071

    Απ: ip address client C#

    βασικά ψάχνω και στο google τώρα. Μια ερώτηση. Τα μηχανάκια οι υπολογιστες δλδ σε ένα domain συγκεκριμένο είναι host ή clients?
  •  29-09-2009, 13:15 54074 σε απάντηση της 54072

    Απ: ip address client C#

    ...και από το πρώτο κώδικα χρησιμοποιήσα μόνο τη μια γραμμή που επιτρεφει το αντικεινενο γι ανα πάρω την ip.

    τα ονόματα των υπολογιστών θα υπάρχουν στη βάση δεδομένων και τηα τα ελεγχω ενα ενα για την Ip λεω...

  •  29-09-2009, 13:24 54076 σε απάντηση της 54072

    Απ: ip address client C#


    κοιτα λογικα θα πρεπει να του δωσεις ενα range απο ip adresses και στην ουσια να κανεις κατι σαν Pink και αν απαντα καποια απο αυτη (αν δεν εχει firewall που το κοβουν) μετα μπορεις να λες για την ip που εκανε repsone δωσε μου το hostname βαλτο σε μια λιστα και παμε στην επομενη ip...

    τουλαχιστον ετσι ειναι σχεδον ολα τα utilites που εχω δει, δεν του λες απλα ξεκινα ψαξε γιατι οι Ip-adress απο το 1.0.0.0 εως 254.254.254.254 εχουν τρελους συνδυασμούς και θα παρει τρελη ωραIndifferent.

    γενικα περιορισε λιγο την ερευνα σου, δεν μπορει δεν θα ξερεις καν τι ip εχει ενα μηχανημα στο lan που ψαχνεις?

    σε domain ή σε workgroup ψαχνεις τελικα, δωσε λεπτομερειες...



    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  29-09-2009, 13:26 54077 σε απάντηση της 54074

    Απ: ip address client C#

    gpal:

    ...και από το πρώτο κώδικα χρησιμοποιήσα μόνο τη μια γραμμή που επιτρεφει το αντικεινενο γι ανα πάρω την ip.

    τα ονόματα των υπολογιστών θα υπάρχουν στη βάση δεδομένων και τηα τα ελεγχω ενα ενα για την Ip λεω...

    σε εχασα τωρα τελειως! τι θες να κανεις?Tongue Tied


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  29-09-2009, 13:30 54078 σε απάντηση της 54072

    Απ: ip address client C#

    Γιώργο, πες μου τί θέλεις να κάνεις για να μπορέσω να σου απαντήσω. Αυτή τη στιγμή δεν έχω καταλάβει. Θέλεις να μάθεις ποιά είναι όλα τα δηλωμένα μηχανήματα στο 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
  •  29-09-2009, 13:31 54079 σε απάντηση της 54077

    Απ: ip address client C#

    σε domain ειναι... αλλά το θέμα είναι πως στη βάση δεδομένων υπάρχουν τα ονόματα των υπολογιστών οπότε με το Dns.GetHostEntry( ... ) θα μπορώ να πάρω τις ip.

    Οπότε νομίζω πως είμαι καλυμμένος.!!!

  •  29-09-2009, 13:49 54080 σε απάντηση της 54079

    Απ: ip address client C#

    Παναγιώτη και johny σας ευχαριστώ και τους 2 για τις πολύ χρήσιμες πληροφορίες σας... Να είστε σίγουροι πως πιάσαν τόπο...!!

    Γιώργος

  •  29-09-2009, 14:00 54081 σε απάντηση της 54079

    Απ: ip address client C#


    gpal:

    σε domain ειναι... αλλά το θέμα είναι πως στη βάση δεδομένων υπάρχουν τα ονόματα των υπολογιστών οπότε με το Dns.GetHostEntry( ... ) θα μπορώ να πάρω τις ip.

    Οπότε νομίζω πως είμαι καλυμμένος.!!!

    ναι εισαι, αυτο ειναι ευκολο αφου ξερεις ολα τα ονοματα κανεις μια λοuπα ανα εγγραφη σου, και για καθε ονομα "τσιμπας" την ip που εχει παρει το μηχανάκι εκείνη τη στιγμη...και την κανεις οτι θες μετα.

    goodluck



    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems