Ειδικά Θέματα Προγραμματισμού

Σχετικά έγγραφα
{ πρωτόκολλο, τοπική-διεύθυνση, τοπική-διεργασία, απομακρυσμένη-διεύθυνση, απομακρυσμένη-διεργασία }

Ειδικά Θέματα Προγραμματισμού

Διδάσκων: Παναγιώτης Ανδρέου

Ειδικά Θέματα Προγραμματισμού

ικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

Ειδικά Θέματα Προγραμματισμού

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

Διαδικτυακές Εφαρμογές Ενότητα 4: Streams

ιαδικτυακές Εφαρµογές

Ειδικά Θέματα Προγραμματισμού

Κατανεμημένα Συστήματα. Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

(C) 2010 Pearson Education, Inc. All rights reserved.

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Δίκτυα Υπολογιστών Ενότητα 10: Ethernet και ARP

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

Τεχνολογία Πολυμέσων. Ενότητα # 17: Πρωτόκολλα μετάδοσης Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 8: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net

Δίκτυα Υπολογιστών Ενότητα 9: Dynamic Host Configuration Protocol- DHCP

Ειδικά Θέματα Δικτύων Ι

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4

HY335 4ο Φροντιστήριο

ΜΑΘΗΜΑ: Δίκτυα Υψηλών Ταχυτήτων

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΜΑΘΗΜΑ: Διαδικτυακές Εφαρμογές

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος

Επίπεδο Μεταφοράς. (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής

Δίκτυα Υπολογιστών Ενότητα 7: Internet Control Message Protocol - ICMP

Δίκτυα Υπολογιστών Ενότητα 5: User Datagram Protocol - UDP

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 9: MPLS

Πρωτόκολλα Διαδικτύου

Προγραμματισμός Διαδικτύου

ΜΑΘΗΜΑ: Ασύρματες Κινητές Επικοινωνίες

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση.

Πρωτόκολλα Διαδικτύου

Προγραμματισμός Διαδικτύου

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Σχεδίαση Δικτύων Υπολογιστών

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Σχεδιασμός Εικονικών Δικτύων Ενότητα 7: Μεταγλώττιση διευθύνσεων (ΝΑΤ)

Προγραμματισμός Διαδικτύου

Λειτουργικά Συστήματα

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εργαστήριο Δικτύων Υπολογιστών

ΥΛΟΠΟΙΗΣΗ ΠΡΟΤΥΠΩΝ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΤΗ ΒΙΒΛΙΟΘΗΚΗ JAVA.NET ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΥ ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΟΥ ΤΕΕ

Ειδικά Θέματα Δικτύων Ι

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Κεφάλαιο 7.3. Πρωτόκολλο TCP

Συστήματα Αναμονής. Ενότητα 10: Ουρά Μ/Μ/s. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Σχεδίαση Δικτύων Υπολογιστών

Ειδικά Θέματα Δικτύων ΙΙ. Ενότητα 8: Δρομολόγηση κατάστασης ζεύξης (Μέρος 2) Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Συστήματα Αναμονής. Ενότητα 1: Εισαγωγή. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Τεχνολογία Πολυμέσων. Ενότητα # 2: Εφαρμογές πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Σχεδίαση Δικτύων Υπολογιστών. Ενότητα 8: Δρομολόγηση κατάστασης ζεύξης (Μέρος 1 ο ) Άγγελος Μιχάλας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός Διαδικτύου

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

7.4 Πρωτόκολλο UDP. 3. Στη περίπτωση που ένα μήνυμα χωράει σε ένα τμήμα, χρησιμοποιούμε το πρωτόκολλο TCP.

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

ΜΑΘΗΜΑ: Υπολογιστικά Νέφη

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Δομημένος Προγραμματισμός

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

ΜΑΘΗΜΑ: Μεταγλωττιστές

Ειδικά Θέματα Δικτύων ΙΙ. Ενότητα 7: Δρομολόγηση κατάστασης ζεύξης (Μέρος 1) Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΑΠΑΝΤΗΣΕΙΣ

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

Β1. Σε ένα τοπικό δίκτυο τοπολογίας Ethernet-TCP/IP το επίπεδο πρόσβασης δικτύου περιλαμβάνει:

Συστήματα Αναμονής. Ενότητα 6: Θεωρία Ουρών. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Πρωτόκολλο ARP. Γεωργιλά Χιονία Καθηγήτρια Πληροφορικής ΠΕ1901

Ασφάλεια Υπολογιστικών Συστημάτων

Σχεδιασμός Εικονικών Δικτύων Ενότητα 1: Εισαγωγή - Ιστορική Αναδρομή Τα πρώτα ιδιωτικά δίκτυα

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ειδικά Θέματα Προγραμματισμού

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στην Πληροφορική

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Οργάνωση και Διοίκηση Πωλήσεων

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

Ειδικά Θέματα Δικτύων Ι

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP);

Υπολογιστικά Συστήματα

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Transcript:

Ειδικά Θέματα Προγραμματισμού Ενότητα 11: Sockets Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα του ΤΕΙ Δυτικής Μακεδονίας και της Ανώτατης Εκκλησιαστικής Ακαδημίας Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Sockets

Σκοποί ενότητας Σε αυτή την παρουσίαση θα ασχοληθούμε με τα Transmission Control Protocol (TCP) και Unreliable Datagram Protocol (UDP) Sockets. Λόγω του γεγονότος ότι το μάθημα απευθύνεται άτομα με κάποια εμπειρία στον προγραμματισμό, κάποια θέματα του βιβλίου θεωρούνται γνωστά κι έχουν παραληφθεί στην παρουσίαση. 5

Περιεχόμενα ενότητας (1/2) Το μοντέλο Client Server. Sockets. TCP Sockets. UDP Sockets. 6

Περιεχόμενα ενότητας (2/2) Java.net package. Client - Server με TCP. Περιγραφή και ορισμός των Datagrams. Παράδειγμα TimeClient/TimeServer. 7

Το μοντέλο Client Server (1/3) Το ευρύτερα διαδεδομένο μοντέλο ανάπτυξης δικτυακών εφαρμογών είναι το μοντέλο του πελάτη - εξυπηρετητή (client - server). Η διεργασία - εξυπηρετητής αρχίζει να εκτελείται σε κάποιον υπολογιστή. Μετά την αρχικοποίησή της, πέφτει σε λήθαργο, αναμένοντας μία διεργασία - πελάτη να επικοινωνήσει μαζί της και να της ζητήσει κάποια υπηρεσία. 8

Το μοντέλο Client Server (2/3) Μία διεργασία - πελάτης αρχίσει να εκτελείται, είτε στο ίδιο σύστημα, είτε σε κάποιο απομακρυσμένο, το οποίο συνδέεται με τον υπολογιστή στον οποίο τρέχει ο εξυπηρετητής μέσω δικτύου. Η διεργασία πελάτης στέλνει μια αίτηση, μέσω του δικτύου, στον εξυπηρετητή, ζητώντας του κάποιου είδους υπηρεσία (π.χ. μεταφορά αρχείου, απομακρυσμένη εκτύπωση, ανάγνωση και αποστολή mail και άλλες). 9

Το μοντέλο Client Server (3/3) Ταυτόχρονα με την εξυπηρέτηση κάποιου πελάτη, ο server έχει την δυνατότητα να δέχεται και αιτήσεις άλλων πελατών προς εξυπηρέτηση. Όταν ο εξυπηρετητής τελειώσει με όλους τους πελάτες, τότε ξαναπέφτει σε λήθαργο, περιμένοντας για μια καινούργια αίτηση και η διαδικασία ξαναρχίζει από την αρχή. Ορίζουμε ως σύνδεση, τον επικοινωνιακό δίαυλο μεταξύ δύο διεργασιών. 10

Sockets Socket είναι το ένα άκρο, από έναν επικοινωνιακό δίαυλο διπλής κατεύθυνσης, μεταξύ δύο προγραμμάτων που εκτελούνται στο δίκτυο. Περιλαμβάνει το πρωτόκολλο, την διεύθυνση και τον αριθμό θύρας του άκρου. Κάθε πρόγραμμα διαβάζει από και γράφει σε ένα socket, με τρόπο παρόμοιο της εγγραφής και ανάγνωσης αρχείων του file system. Υπάρχουν δύο είδη sockets: TCP UDP. 11

TCP Sockets (1/2) To TCP (Transmission Control Protocol) socket είναι υπηρεσία προσανατολισμένη στην σύνδεση (connection-oriented service). Κατά την αρχικοποίηση έχουμε την εγκαθίδρυση μιας σύνδεσης μεταξύ δύο διεργασιών. 12

TCP Sockets (2/2) H σύνδεση με TCP socket απαιτεί την ανταλλαγή τριών πακέτων χειραψίας (handshake packets) και είναι πιο χρονοβόρα στην αρχικοποίησή της από την αντίστοιχη με UDP datagrams. Τα TCP sockets εξασφαλίζουν μια αξιόπιστη μεταφορά της πληροφορίας. Ό,τι αποστέλλεται από το ένα άκρο είναι σίγουρο ότι θα φτάσει στο άλλο. 13

UDP Sockets (1/2) To UDP (Unreliable Datagram Protocol ) socket είναι μια υπηρεσία χωρίς σύνδεση (connectionless service ). Κατά την αρχικοποίηση δεν έχουμε την εγκαθίδρυση μιας σύνδεσης μεταξύ δύο διεργασιών. 14

UDP Sockets (2/2) Ότι αποστέλλεται από το ένα άκρο δεν είναι σίγουρο ότι θα φτάσει στο άλλο. Είναι στην ευθύνη του αποστολέα να ελέγξει ότι αυτό που έστειλε, το έλαβε τελικά ο παραλήπτης και δεν χάθηκε στον δρόμο. Οι προηγούμενες δύο διαφορές καθορίζουν τελικά και την χρήση των δύο αυτών ειδών. 15

Java.net package Πίνακας 1. Java.net package, πηγή: διδάσκων (2015). Μηχανισμός / Περιγραφή Κλάση Socket TCP άκρο - πελάτης ServerSocket ΤCP άκρο - εξυπηρετητής DatagramSocket UDP άκρο (client & server) DatagramPacket UDP πακέτο ΙnetAddress Διεύθυνση Internet Protocol (IP) URL Uniform Resource Locator URLConnection Σύνδεση με αντικείμενο του web. 16

Client - Server με TCP (1/3) O πελάτης (EchoClient παράδειγμα). socket(): Αρχικοποίηση και σύνδεση στον server. getinputstream(): Σύνδεση του socket με τον μηχανισμό εισόδου/εξόδου. getoutputstream(). read() και write(): Ανάγνωση κι εγγραφή στο συνδεδεμένο με το socket stream. Ακολουθούν και άλλες αναγνώσεις/εγγραφές. close(): Κλείνει το socket κι απελευθερώνεται αντίστοιχος πόρος του συστήματος. 17

Client - Server με TCP (2/3) O εξυπηρετητής (EchoServer παράδειγμα). ServerSocket(): Αρχικοποίηση του listening socket. accept(): Αναμονή και εντοπισμός καινούργιου πελάτη. new Thread: Δημιουργία καινούργιου thread για την εξυπηρέτηση πελάτη. getinputstream(): Το καινούργιο socket που επιστρέφεται από την accept (τύπου Socket) συνδέεται με τον μηχανισμό εισόδου/εξόδου. getoutputstream(). 18

Client - Server με TCP (3/3) O εξυπηρετητής (EchoServer παράδειγμα) συνέχεια. read() και write() - ανάγνωση και εγγραφή στο συνδεδεμένο με το socket stream. ακολουθούν και άλλες αναγνώσεις/εγγραφές. close() - κλείνει το socket (όχι το listening) και απελευθερώνεται ο αντίστοιχος πόρος του συστήματος. 19

Περιγραφή και ορισμός των Datagrams (1/2) Στα UDP Datagrams η επικοινωνία που συνήθως αναπτύσσεται είναι peer-to-peer, δηλ. ίσος προς ίσον. Δεν έχουμε πλήρη διάκριση των ρόλων μεταξύ των δύο επικοινωνούντων διεργασιών - τα δύο προγράμματα πελάτης/εξυπηρετητής λειτουργούν με παρόμοια διαδικασία βημάτων. 20

Περιγραφή και ορισμός των Datagrams (2/2) Στα datagrams, τα πακέτα ( packets ) που μετακινούνται μέσω του δικτύου δεν διακινούν την πληροφορία αξιόπιστα και η λήψη της από το άλλο άκρο δεν γίνεται με την ίδια σειρά με την οποία απεστάλησαν. 21

Παράδειγμα TimeClient/TimeServer (1/2) O TimeClient, κάνει ερώτηση σε απομακρυσμένο host, ζητώντας του μάθει την εκεί ώρα. Αντίστοιχα ο TimeServer παρέχει αυτήν την υπηρεσία, καθώς εκτελείται συνέχεια στον απομακρυσμένο host. Για τον αριθμό θύρας της υπηρεσίας στον server διαλέξαμε τον 8505 κατά τυχαίο τρόπο, αλλά μπορεί να χρησιμοποιηθεί και οποιοσδήποτε άλλος διαθέσιμος. 22

Παράδειγμα TimeClient/TimeServer (2/2) Θα χρησιμοποιήσουμε τα αντικείμενα δύο κλάσεων. Η κλάση DatagramSocket, που υλοποιεί την επικοινωνία με UDP datagrams. Η κλάση DatagramPacket, που αποτελεί το καλούπι με το οποίο θα φτιάχνουμε τα προς αποστολή πακέτα. 23

Παράδειγμα TimeClient (1/6) Κατασκευάζουμε το αντικείμενο της διεύθυνσης του host που τρέχει ο TimeServer. Αυτή παρέχεται από τον χρήστη με την εντολή εκτέλεσης του προγράμματος από την γραμμή εντολών: java TimeClient 127.0.0.1. To αντικείμενο της διεύθυνσης ανήκει στην κλάση InetAddress, της οποίας χρησιμοποιούμε την μέθοδο getbyname(string), για να το μετατρέψουμε από την αλφαριθμητική μορφή που το λαμβάνουμε στον τύπο InetAddress : InetAddresshostAddress = InetAddress.getByName(args[0]); 24

Παράδειγμα TimeClient (2/6) Κατόπιν δημιουργούμε το datagram socket, μέσω του οποίου θα στείλουμε το πακέτο με την αίτηση και θα λάβουμε με αυτό την απάντηση. Ο παρακάτω κώδικας εκτελεί ακριβώς αυτό: DatagramSocket serversoc = new DatagramSocket(); Ο κατασκευαστής που χρησιμοποιήσαμε, διαλέγει από μόνος του κάποιο ελεύθερο port στο μηχάνημα που τρέχει ο πελάτης, για να το συνδέσει με το datagram socket. 25

Παράδειγμα TimeClient (3/6) Να σημειώσουμε εδώ, ότι δεν χρειάζεται να συνδέσουμε το datagram socket με streams εισόδου/εξόδου, αφού δεν έχουμε Ι/Ο σε κάποιο κανάλι, αλλά αποστολή και λήψη μεμονωμένων πακέτων. 26

Παράδειγμα TimeClient (4/6) Ακολουθεί κατασκευή του πακέτου της αίτησης. Ανήκει στην κλάση DatagramPacket. DatagramPacket packet; byte[] message = new byte[256]; packet = new DatagramPacket(message, 256, hostaddress, port); Η αποστολή γίνεται, πολύ απλά, καλώντας την μέθοδο send(datagrampacket) του datagram socket. serversoc.send(packet); 27

Παράδειγμα TimeClient (5/6) Στη συνέχεια έχουμε αναμονή για λήψη της απάντησης με την μέθοδο receive(datagrampacket) του datagram socket. Serversoc.receive(packet); Η receive() μπλοκάρει το νήμα απ το οποίο έχει κληθεί, μέχρι να λάβει κάποιο datagram πακέτο στο port που έχει ανοίξει το datagram socket. 28

Παράδειγμα TimeClient (6/6) Mε την μέθοδο getdata() της κλάσης DatagramPacket, λαμβάνουμε τον πίνακα από bytes με την χρήσιμη πληροφορία, τον οποίο μετατρέπουμε σε String για την εκτύπωση. Οι μέθοδοι getinetaddress() και getport() επιστρέφουν την διεύθυνση και τον αριθμό θύρας αντίστοιχα, του αποστολέα του πακέτου. Πριν το πρόγραμμα τερματιστεί, απελευθερώνουμε με την close() το DatagramSocket(). 29

Παράδειγμα TimeServer (1/4) Ο εξυπηρετητής κατασκευάζει ένα πακέτο λήψης αιτήσεων (max 8KBytes). Ο εξυπηρετητής δημιουργεί το datagram socket, για την λήψη των πακέτων. O κατασκευαστής του αντικειμένου DatagramSocket δέχεται ως port το 8505, στο οποίο θα ακούει, για νέες συνδέσεις. 30

Παράδειγμα TimeServer (2/4) Επειδή η παρεχόμενη υπηρεσία απαιτεί μικρής διάρκειας εξυπηρέτηση, δεν είναι απαραίτητο να δημιουργεί για κάθε αίτηση πελάτη και νέο thread. Στη συνέχεια έχουμε αναμονή για λήψη της αίτησης πελάτη με την μέθοδο receive(datagrampacket) του datagram socket. s.receive(packet); 31

Παράδειγμα TimeServer (3/4) Οι μέθοδοι getinetaddress() και getport() επιστρέφουν την διεύθυνση και τον αριθμό θύρας αντίστοιχα, του αποστολέα του πακέτου αίτησης του πελάτη. Ακολουθεί κατασκευή του πακέτου που θα σταλεί στον πελάτη και θα περιέχει: Το String με την τοπική ώρα του εξυπηρετητή. Το μήκος του String. Τη διεύθυνση και το port του πελάτη. 32

Παράδειγμα TimeServer (4/4) Η αποστολή γίνεται, πολύ απλά, καλώντας την μέθοδο send (DatagramPacket) του datagram socket. 33

Βιβλιογραφία 1. Java προγραμματισμός, Όγδοη έκδοση, Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ.. 2. Απόλυτη Java, Savitch, Εκδόσεις ΙΩΝ, 2008. 3. Πλήρες εγχειρίδιο της Java 6, Lemay Cadenhead, Εκδόσεις Γκιούρδας Μ., Αθήνα 2007. 34

Τέλος Ενότητας