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

 

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

Έλενχος Client!

Îåêßíçóå áðü ôï ìÝëïò teDeV. Τελευταία δημοσίευση από το μέλος teDeV στις 13-07-2006, 19:07. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  29-06-2006, 11:59 14299

    Embarrassed [:$] Έλενχος Client!

    Καλησπέρα, φτιάχνω μια εφαρμογή και χρειάζομαι να ξέρω σε ένα δίκτυο κάποια πράματα ...

    1) Πόσα προγράμματα της εφαρμογής μου τρέχουν συνολικά μέσα στο δίκτυο

    2) Ποιά είναι η ιπ τους και το όνομα του υπολογιστή.

    μετά από αυτό θέλω να μπορώ να στέλνω μία παράμετρο σε ένα συγκεκριμένο τερματικό και να τερματίζει την λειτουργία της εφαρμογής.

    A! δεν θέλω λύση του τύπου να το αποθηκεύω σε μία βάση και να το παρακολουθώ απο εκεί, καθώς θέλω real time απάντηση απο το σύστημα, και όχι σκουπίδια που μπορεί να έχουν γίνει απο διάφορους λόγους.

    Φαντάζομαι ότι θα μπορούσε να υπάρχει ένας τρόπος να ψάχνει όλο το δίκτυο , όλα τα μηχανήματα μέχρι να πάρει μία απάντηση απο το κάθε Η/Υ αν τρέχει την εφαρμογή ή όχι

    τίποτα τρελό ελπίζω.... τα φώτα σας ! :(


    To 2007 tha ta poume stin agora :)
  •  30-06-2006, 09:33 14322 σε απάντηση της 14299

    Απ: Έλενχος Client!

    Μέσω WMI μπορείς να ελέγχεις τα processes που τρέχουν τόσο στο τοπικό μηχάνημα όσο και στα remote μεχανήματα. Ψάξε περί WMI και αν κολλήσεις, εδώ είμαστε...
    Vir prudens non contra ventum mingit
  •  11-07-2006, 14:14 14602 σε απάντηση της 14322

    Απ: Έλενχος Client!

    Έχω την υποψία ότι αυτό που θέλει να κάνει ο OP είναι έλεγχος ταυτόχρονων χρηστών. Για κάτι τέτοιο (αλλά και για άλλες εφαρμογές) το WMI δεν είναι κατάλληλο, όχι τόσο γιατί είναι πολύπλοκο και έχει κακό documentation Wink όσο γιατί (ιδιαίτερα στο δίκτυο) απαιτεί δικαιώματα administrator, τα οποία δε θα τα έχεις και δεν μπορείς να τα απαιτήσεις.

    Για το πρόβλημα των ταυτόχρονων χρηστών, υπάρχουν δύο δρόμοι που μπορείς να ακολουθήσεις στο μοντέλο που ζητάς:
    • 1η εναλλακτική: Κάθε instance της εφαρμογής να ακούει σε ένα socket/named pipe/remoting channel/whatever στο οποίο να απαντά ότι είναι ζωντανό. Όταν η εφαρμογή σηκώνεται, κάνει broadcast αναζητώντας και μετρώντας αυτούς που θα απαντήσουν. Αυτή η λύση έχει διάφορα μειονεκτήματα:
      • Σε ορισμένες περιπτώσεις (και ειδικά αν δεν έχεις ΒΔ) μπορεί να παρακαμφθεί βγάζοντας τον υπολογιστή από το δίκτυο την ώρα που η εφαρμογή αρχικοποιείται. Για να το καλύψεις αυτό πρέπει να στέλνεις ένα όμοιο broadcast ελέγχου τακτικά -- αλλά όχι και πολύ συχνά.
      • Εξαιρουμένου του socket, πρέπει να βρεις εσύ τους υπολογιστές του τοπικού σου δικτύου για να κάνεις το enumeration και να στείλεις σε όλους μήνυμα.
      • Σε δίκτυα που είναι χωρισμένα σε τμήματα, με ξεχωριστό IP range το καθένα, έχεις πολλές πιθανότητες να μην επικοινωνήσεις με όλους.
    • 2η εναλλακτική: Υπάρχει ένα κεντρικό process σε έναν υπολογιστή, το οποίο κρατά λογαριασμό για το ποιοι clients είναι ζωντανοί. Κάθε client στέλνει (συχνά) ένα heartbeat signal στον server, ώστε να δηλώσει την ενεργή παρουσία του, και του ζητά την άδεια να ξεκινήσει ανάλογα με το πλήθος των υπόλοιπων ενεργών εφαρμογών. Στην περίπτωση αυτή:
      • Έχεις μια λύση που μπορεί να χρησιμοποιηθεί σε πολλές εφαρμογές (καλό)
      • Αν ο server πέσει δεν μπορεί κανένας να δουλέψει (κακό)
    Και στις δύο περιπτώσεις πάντως, το σύστημα παρακάμπτεται με λίγη ή πολλή προσπάθεια.
    HTH.


    Νατάσα Μανουσοπούλου
  •  11-07-2006, 14:39 14603 σε απάντηση της 14602

    Απ: Έλενχος Client!

    Πολύ σωστά, ωστόσο χωρίς WMI πως μπορείς να κάνεις αυτό που λέει ο teDeV, να κλείνει remotely το process της εφαρμογής για κάποιο επιλεγμένο client;
    Vir prudens non contra ventum mingit
  •  11-07-2006, 16:12 14608 σε απάντηση της 14603

    Απ: Έλενχος Client!

    Είτε του στέλνεις μήνυμα στο κανάλι που ακούει και του ζητάς ευγενικά να κλείσει, είτε ζητάς από το server να ασκήσει διευθυντικό δικαίωμα και να του ζητήσει εκείνος να κλείσει στο επόμενο heartbeat. Όπως και να έχει η ευγένεια είναι το παν Smile


    Νατάσα Μανουσοπούλου
  •  11-07-2006, 19:36 14615 σε απάντηση της 14608

    Απ: Έλενχος Client!

    Σίγουρα είναι το παν! Smile

    Ουργκ! Εξ΄αρχής είχε κολλήσει στο μυαλό μου το σενάριο ότι δεν είναι δική σου η εφαρμογή που προσπαθείς να κλείσεις...
    Vir prudens non contra ventum mingit
  •  11-07-2006, 20:49 14616 σε απάντηση της 14615

    Απ: Έλενχος Client!

    Μια καλή ιδέα είναι, να παίξεις με socket και απο το server κομμάτι να στέλνεις ένα μήνυμα στο client, μια λέξη για παράδειγμα οποιαδήποτε και όταν ο client λάβει αυτή τη "λέξη" να εκτελείται κάτι σαν το παρακάτω

    If Received = "TerminateClient" Then

    me.close

    end if

    Χωρίς WMI και χωρίς δικαιώματα administrator.

    Αυτό έχω κάνει κι εγώ για να κάνω restart και terminate το client κομμάτι μου.

    Ελπίζω να βοήθησα κάπως Smile

    Άμα κάτσω πάνω στη γραμμή του τηλεφώνου θα είμαι online???
  •  13-07-2006, 19:07 14690 σε απάντηση της 14299

    Απ: Έλενχος Client!

    λοιπόν αυτό που θέλω να κάνω είναι ι εναλλακτική 1 του mns.

    και το αποτελεσμα θέλω να είναι και αυτό που λέει ο zax1. αλλα δεν ξέρω πως :(

    ένα παράδειγμα θα βοηθούσε...
    To 2007 tha ta poume stin agora :)
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems