Άσκηση 12.3
Ανάπτυξη ενός
απλού
νηματικού
διακομιστή
Θέση αρχείων = /ExerciseCode/C12/TwelveThree/
Σε αυτή την
άσκση θέλω να
τροποποιήσετε
το τμήμα του
κώδικα εός
διακομιστή
που
αποτελεί
τμήμα ενός
νηματικού
διακομιστή.
Υπάρχουν δύο
μέρη που
σχετίζονται
με αυτή την
άσκηση: το
μέρος του
διακομιστή
και το
μέρος του
διακομιστή.
Το μέρος του
διακομιστή
περιλαμβάνει
τις
ακόλουθες
κλάσεις:
- ConnectionThread
είναι η κλάση
που
υλοποιεί τα
νήματα που
χρησιμοποιούνται
στην
επεξεργασία
συνδέσεων.
- ThreadServer είναι
η κλάση που
δημιουργεί
τα νήματα που
επεξεργάζονται
συνδέσεις.
Θα
χρειαστεί να
προσθέσετε
κώδικα για να
εκτελέσετε
την άσκση.
- ThreadServerSolution
είναι η λύση στην άσκηση.
- ThreadServerLauncher
είναι μια απλή
κλάση που
απλά
δημιουργεί
και ξεκινά τη
κλάση
ThreadServer.
Το μέρος του
πελάτη
περιέχει τις
ακόλουθες
κλάσεις:
- ClientSimulator,
που
προσομοιώνει
δέκα πελάτες
που
συνδέονται
με το
διακομιστή. Ο
διακομιστής
'κοιμάται' για
1000 ms πριν
εγκαταλείψει
τη σύνδεση
για να
προσομοιώσει
μια σχετικά
μακρά
επεξεργασία
από τη πλευρά
του, όπως η
προσπέλαση
σε μια βάση
δεδομένων. Ο
πελάτης
στέλνει ένα
απλό μυνημα με
το οποίο
ταυτοποιείται.
- ClientThread,
είναι μια
κλάση νήματος
που
διεκπεραιώνει
τη σύνδεση.Τα
αντικείμενα
δημιουργούνται
από τη ClientSimulator.
Οι
ενέργειες
που πρέπει να
κάνετε σε
αυτή την άσκηση
είναι:
- Ξεκινήστε
τον
διακομιστή
σε ένα
παράθυρο MSDOS. Θα
δείτε ένα
πλαίσιο με
μηνύματα που
δείχνουν οτι
ο
διακομιστής
ξεκίνησε με
επιτυχία.
- Ξεκινήστε
τον πελάτη σε
άλλο
παράθυρο MSDOS. Θα
δημιουργήσει
10
συνδέσεις
με τον
διακομιστή
και θα δείτε
μηνύματα
σχετικά με
κάθε
σύδεση και
την αντίστοιχη
αποσύνδεση.
- Σταματήστε
τον
διακομιστή
κάνοντας
κλικ στο
κουμπί Quit.
Ο πελάτης θα
έχε ήδη
τερματίσει.
- Εξετάστε
τις κλάσεις
ConnectionThread, ThreadServer και
ThreadServerLauncher καθως
και τις
κλάσεις ClientSimulator
και ClientThread για να
καταλάβετε
πως
δουλεύουν.
Ειδικά πρέπει
να
κατανοήσετε
που
δημιουργούνται
και
δουλεύουν
τα νήματα.
- Τροποποιήστε
τον κώδικα ThreadServer
έτσι ώστε να
εγκαθίσταται
μια υποδοχή
και
δημιουργείται
ένα νήμα για τη
διαχείριση
της σύνδεσης.
Το νήμα πρέπει
να ξεκινήσει.
- Αλάξτε τη γραμμή Thread
server = new Thread(new ThreadServerSolution("Server")); στη
κλάση ThreadedServerLauncher σε Thread server = new Thread(new
ThreadServer("Server"));
- Ξεκινήστε
ξανά τον
διακομιστή.
- Ξεκινήστε
τον πελάτη
και εξετάστε
τα μηνύματα για
να
βεβαιωθείτε
οτι όλες οι
συνδέσεις
δημιουργούνται
και
τερματίζονται
με επιτυχία.
- Σταματήστε
τον
διακομιστή
κάνοντας
κλικ στο
κουμπί Quit.