Άσκηση 15.2
Εκτέλεση
ενός απλού
κινητού
πράκτορα
Θέση αρχείων = /ExerciseCode/C15/FifteenTwo/
Η άσκηση αυτή
περιγράφει ένα
απλό ρομπότ
που
επισκέπτεται
έναν
ιστοτόπο, ο
οποίος
περιέχει
λεπτομέρειες
για τις
προσβάσεις
χρηστών σε
εναν
διακομιστή
και
επιστρέφει
πληροφορίες.
Στην άσκηση
αυτή υπάρχουν
δύο μέρη: το
μέρος του
διακομιστή
και το μέρος
του πελάτη.
Ο
διακομιστής
περιέχει τις
ακόλουθες
κλάσεις:
- Server,
αρχικοποιεί
έναν
διακομιστή,
καλωσορίζει
το ρομπότ και
εκτελεί τον
κώδικά του. Ο
διακομιστής
προσομοιώνει
έναν ιστοτόπο
που κρατά
δεδομένα
για τους
χρήστες που
επισκέπτονται
έναν
διακομιστή
Ιστού. Τα
ονόματα
των χρηστών
που
προσπελα'υνουν
τον
διακομιστή
αποθηκεύονται
σε ένα
αντικείμενο
Vector. Το
ρομπότ
διαβάζεται
με τη χρήση ενός
ObjectInputStream,
εκτελείται
και
επιστρέφεται
με τη χρήση ενός
ObjectOutputStream. Αυτές οι
ροές
επιτρέπουν τη
μεταφορά
αντικειμένων
μέσω μιας
γραμμής
επικοινωνίας.
- BotServerTest
είναι η κλάση
που περιέχει
τον κώδικα
ελέγχου που
καθορίζει
τις
λεπτομέρειες
σύνδεσης και
καθιστά το
διακομιστή
έτοιμο για την
υποδοχή
και την
εκτέλεση
του ρομπότ.
Ο πελάτης
περιέχει τις
ακόλουθες
κλάσεις:
- Bot. Καθορίζει
ένα
ρομπότ και
περιέχει
κώδικα για
τον
καθορισμό
και την
επιστροφή
ερωτημάτων.
Περιέχει
κώδικα για τα
δύο πιθανά
ερωτήματα
ενός ρομπότ:
ένα ερώτημα
που βρίσκει
το συνολικό
αριθμό των
προσβάσεων
ενός
συγκεκριμένου
χρήστη και ένα
ερώτημα που
επιστρέφει
το συνολικό
αριθμό
προσβάσεων
για όλους
τους
χρήστες.
- BotClient. Αυτό
αρχικοποιεί
ένα ρομπότ και
το στέλνει
στο
διακομιστή.
Όταν το ρομπότ
επιστρέψει
τις
πληροφορίες
που περιέχει
αυτές
εμφανίζονται.
- ClientTester. Εδώ
καθορίζεται
ο πελάτης
που στέλνει
το ρομπότ.
Ακολουθήστε
τα παρακάτω
βήματα.
- Ξεκινήστε
το server. Θα δείτε
ένα μήνυμα ότι
περιμένει το
ρομπότ.
- Ξεκινήστε
τον πελάτη. Θα
δείτε ένα
μήνυμα που
περιέχει τον
αριθμό
των
προσβάσεων
του χρήστη "John" (4).
- Εξετάστε
τον κώδικα
και δείτε
πως το
λειτουργεί
ο μηχανισμός
μεταφοράς
του ρομπότ
και πως
εκτελείται
το ρομπότ. Το
κλειδί εδώ
είναι
η χρήση των ροών
Object (Object
streams).