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



Σχετικά έγγραφα
Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #11 η : Διαδικτυακές Εφαρμογές με τη Java

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

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

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

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

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

Ορισμός : URL είναι ένα ακρωνύμιο για το Uniform Resource Locator και το οποίο αποτελεί μια αναφορά ( μια διεύθυνση ) στο Internet.

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

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

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

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

Κατανεμημένα Συστήματα

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

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4

Φροντιστήριο Α' Κατανεμημένα Συστήματα Επιμέλεια: Μπούτσης Ιωάννης

Εισαγωγή στον Κατανεμημένο Προγραμματισμό

Τεχνολογίες Παγκόσμιου Ιστού. 1η διάλεξη

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

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

Επαναληπτικές Ασκήσεις Μαθήματος

Αρχεία και Ρεύματα. Αρχεία

Φροντιστήριο Α' Κατανεμημένα Συστήματα Επιμέλεια: Μπούτσης Ιωάννης

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

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

Γενικά (για τις γραπτές εξετάσεις)

Πρωτόκολλα Διαδικτύου. Άγγελος Ρούσκας Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς

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

1.2.2 Το μοντέλο δικτύωσης TCP/IP 1 / 26

Λογισµικό (Software SW) Λειτουργικά Συστήµατα και ίκτυα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Πολυνηµατικές εφαρµογές σε Java

Ανδρέας Παπαζώης. Τμ. Διοίκησης Επιχειρήσεων

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

Αντικειμενοστρεφής Προγραμματισμός

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

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

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

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #16

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP

Εισαγωγή στο TCP/IP. Π. Γαλάτης

Αντικειμενοστρεφής Προγραμματισμός

ΚΟΙΝΩΝΙΚΗ ΔΙΚΤΥΩΣΗ ΜΕΣΩ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ: ΧΡΗΣΗ ΔΕΚΤΗ GPS ΓΙΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ ΣΕ ΚΙΝΗΤΗ ΣΥΣΚΕΥΗ

4 η ιάλεξη: Signals UDP Sockets

Τεχνολογίες ιαδικτύου

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Interprocess Communication

Δίκτυα Η/Υ στην Επιχείρηση

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Network Address Translation (NAT)

ΕΠΛ 012. Δίκτυα Τπολογιστών & Διαδίκτυο

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

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

11β Δομικά πρότυπα σχεδίασης

άσκηση Hide UI Elements 7.2 Try and Catch

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Πρωτόκολλα Διαδικτύου (ΨΣ-326 DS151)

Ανάπτυξη δικτυακού παιχνιδιού με δυνατότητα συμμετοχής ακροατηρίου.

Δίκτυα Επικοινωνιών ΙΙ: Network Programming Εισαγωγή, TCP, UDP, Ports

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service)

Ιόνιο Πανεπιστήµιο Τµήµα Πληροφορικής Συστήµατα Επικοινωνίας. Μοντέλο TCP/IP. Ενότητα E. Πόσοι εµπλέκονται σε ένα Σύστηµα Επικοινωνίας

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

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία ( ) Υπηρεσία FTP (File Transfer Protocol)

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

Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Επίπεδο δικτύου IP Forwading κτλ

Βασικές Υπηρεσίες Διαδικτύου. Επικοινωνίες Δεδομένων Μάθημα 2 ο

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

Διαχείριση Πληροφοριών στο Διαδίκτυο. Εργαστήριο 1

Εισαγωγή στο διαδίκτυο

Εισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός

Περιεχόμενα. Πρόλογος... xiii

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα

Απομακρυσμένη Πρόσβαση και Εντολές Ελέγχου και Υποστήριξης

Περί δικτύων. Δρ. Ματθαίος Πατρινόπουλος

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets

Αντικειμενοστρεφής Προγραμματισμός

Επικοινωνία Client/Server Υποδοχές (Παραδείγματα)

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ ΓΙΑ ΕΠΙΚΟΙΝΩΝΙΑ ΠΕΛΑΤΩΝ ΜΕΣΩ ΙΑ ΙΚΤΥΟΥ

Οντοκεντρικός Προγραμματισμός

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

Δίκτυα Επικοινωνιών ΙΙ: Πληροφορίες σχετικά με το μάθημα

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας Βιβλιοθηκονοµίας. Μοντέλο TCP/IP. Ενότητα E. Συστήµατα Επικοινωνίας

Εισαγωγή στις ΤΠΕ ΙΙ Γιάννης Βρέλλης ΠΤΔΕ-Πανεπιστήμιο Ιωαννίνων. World Wide Web. Παγκόσμιος Ιστός

Δίκτυα Υπολογιστών Το επίπεδο μεταφοράς (transport layer)

Υπολογιστές και ίκτυα Η/Υ.

7.2.2 Σχέση OSI και TCP/IP

Αντικειμενοστρεφής Προγραμματισμός

Transcript:

Διάλεξη 23: Εισαγωγή στην Δικτύωση (Networking) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διευθύνσεις και Θύρες - Sockets και ServerSockets Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 1

Εισαγωγή Η επικοινωνία μεταξύ δύο υπολογιστών στο διαδίκτυο επιτυγχάνεται με δύο πρωτόκολλα: Transmission Control Protocol (TCP) Αξιόπιστη ροή δεδομένων Η σειρά των δεδομένων παίζει ρόλο User Datagram Protocol (UDP) Μη-αξιόπιστη ροή δεδομένων (πιο αποδοτική) Η σειρά των δεδομένων δεν παίζει ρόλο Η βιβλιοθήκη java.net περιέχει κλάσεις για την διεκπεραίωση της δικτύωσης ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 2

Διευθύνσεις και Θύρες (Addressing and Ports) Η διεύθυνση κάποιου υπολογιστή στο διαδίκτυο είναι μία μοναδική διεύθυνση (π.χ., 109.105.224.164) χρησιμοποιώντας το Internet Protocol (IPv4 ή IPv6) Ερώτηση: Τι συμβαίνει αν έχουμε 3 υπολογιστές στο ίδιο σπίτι; Απάντηση:Χρησιμοποιούμε ένα διακομιστή (router) ο οποίος έχει μοναδική διέυθυνσηστο διαδίκτυο αλλά δημιουργεί επίσης ένα τοπικό δίκτυο στο σπίτι μας με τοπικές διευθύνσεις Παράδειγμα: Router: External IP 109.105.224.164/Internal IP 192.168.0.1 PC1: 192.168.0.2 PC2: 192.168.0.3 PC3: 192.168.0.4 Ερώτηση: Τι συμβαίνει αν κάποια δεδομένα που φθάνουν σε ένα υπολογιστή προορίζονται για μία εφαρμογή Α και κάποια άλλα για άλλη εφαρμογή Β; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 3

Διευθύνσεις και Θύρες (Addressing and Ports)(συν.) Απάντηση: Επιτυγχάνεται με τη χρήση ξεχωριστών θηρών (ports) Εφαρμογή 1 Εφαρμογή 2 Εφαρμογή 3 Port 1 Port 2 Port 3 TCP ήudp Packet (data, port) Παραδείγματα ports: 21: FTP 22: SSH Δικτύωση με κλάσεις στην Java Διευθύνσεις (URLs): URL, URLConnection Επικοινωνία με TCP: Socket, ServerSocketclasses Επικοινωνία με UDP: DatagramPacket, DatagramSocket, MulticastSocket ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 4

Uniform Resource Locator (URL) Ορισμός: URL είναι ακρώνυμο για Uniform Resource Locatorκαι είναι μία αναφορά (διεύθυνση) σε ένα πόρο στο διαδίκτυο Συστατικά ενός URL Host Name: Το όνομα (διεύθυνση) της μηχανής Filename: Το μονοπάτι για κάποιο αρχείο Port Number: Η θύρα επικοινωνίας Reference: Μία αναφορά για μία συγκεκριμένη τοποθεσία (anchor) Δημιουργία ενός URL (κλάσεις URL και URI) URL myurl = new URL("http://example.com/test/"); URI myuri = new URI("http", "example.com", "/test/", ""); URL myurl = uri.tourl(); Χρήσιμες Μεθόδοι: getprotocol, gethost, getport, getpath, getfile ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 5

Χρήση Ροών με URL Επιτρέπεται η απευθείας χρήση java.io.inputstream από ένα URL Παράδειγμα(εκτύπωση του HTML κώδικα μίας ιστοσελίδας): URL cs = null; try { cs = new URL("http://www.cs.ucy.ac.cy/index.php"); BufferedReader in = new BufferedReader(new InputStreamReader(cs.openStream())); String inputline; while ((inputline = in.readline())!= null) System.out.println(inputLine); in.close(); catch (MalformedURLException e) { catch (IOException e) { ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 6

Μοντέλο Πελάτη/Εξυπηρετητή (Client/Server model) Εξυπηρετητής (server) «Ακούει» συνεχώς για συνδέσεις από πελάτεςμε ServerSocket(s) συγκεκριμένα ports Πρέπει να τρέχει πριν να δημιουργήσει σύνδεση ο πελάτης Πελάτης (client) Συνδέεται με Socket(s) σε υφιστάμενους εξυπηρετητές Όταν επιτευχθεί η επικοινωνία, μετά τα δεδομένα μεταδίδονται με I/O Streams όπως για τα αρχεία Server Server Socket (e.g., port 8080) ServerSocket server = new ServerSocket(8080); I/O Stream Client Client Socket (e.g., port 8080) Socket client = new Socket(8080); Socketclient = server.accept(); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 7

Παράδειγμα: Client/Server Εξυπηρετητής (server) try { // Create a server socket ServerSocket serversocket = new ServerSocket(8000); print("server started "); // Listen for a connection request Socket socket = serversocket.accept(); // Create data input and output streams DataInputStream inputfromclient = new DataInputStream( socket.getinputstream()); DataOutputStream outputtoclient = new DataOutputStream( socket.getoutputstream()); while (true) { // Receive radius from the client double radius = inputfromclient.readdouble(); // Compute area double area = radius * radius * Math.PI; // Send area back to the client outputtoclient.writedouble(area); catch (IOException ex) { Πελάτης (client) private DataOutputStream toserver; private DataInputStream fromserver; try { // Create a socket Socket socket = new Socket("localhost", 8000); // Create an input stream to // receive data from the server fromserver = new DataInputStream( socket.getinputstream()); // Create an output stream to // send data to the server toserver = new DataOutputStream( socket.getoutputstream()); catch (IOException ex) { ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 8

Πληροφορίες για τους πελάτες (κλάση InetAddress) Πληροφορίες για τους πελάτες μπορούν να αποκτηθούν με την κλάση InetAddress Η κλάση InetAddress μοντελοποιεί μία διεύθυνση IP Δημιουργία και αρχικοποίηση InetAddress inetaddress = socket.getinetaddress(); Παράδειγμα Εκτύπωση ονόματος και IP διεύθυνσης System.out.println("Client's host name is " + inetaddress.gethostname()); System.out.println("Client's IP Address is " + inetaddress.gethostaddress()); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 9

Εξυπηρέτηση Πολλαπλών Πελατών Επιτυγχάνεται με τη χρήση threads Για κάθε σύνδεση δημιουργείται ένα thread Παράδειγμα while (true) { Socket socket = serversocket.accept(); Thread thread= new ThreadClass(socket); thread.start(); Πιο σωστά με την χρήση εσωτερικών κλάσεων // Create a new thread for the connection HandleAClient task = new HandleAClient(socket); new Thread(task).start(); Inner class class HandleAClient implements Runnable { private Socket socket; // A connected socket public HandleAClient(Socket socket) { this.socket = socket; public void run() { try { // Create data input and output streams DataInputStream inputfromclient = new DataInputStream( socket.getinputstream()); DataOutputStream outputtoclient = new DataOutputStream( socket.getoutputstream()); // Continuously serve the client while (true) { // Receive radius from the client double radius = inputfromclient.readdouble(); // Compute area double area = radius * radius * Math.PI; // Send area back to the client outputtoclient.writedouble(area); catch(ioexception e) { ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 10