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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 11.2 Sockets Το μοντέλο Client - Server και μερικοί ορισμοί Το ευρύτερα διαδεδομένο μοντέλο ανάπτυξης δικτυακών εφαρμογών είναι το μοντέλο του πελάτη - εξυπηρετητή ( client - server ). Ο εξυπηρετητής είναι μια διεργασία, η οποία εκτελείται σε έναν υπολογιστή και αναμένει να συνδεθεί σε αυτήν κάποιο πρόγραμμα - ο πελάτης, όπως ονομάζεται -, για να του παράσχει υπηρεσίες. Ένα τυπικό σενάριο που ακολουθείται συνήθως, είναι το εξής : Η διεργασία - εξυπηρετητής αρχίζει να εκτελείται σε κάποιον υπολογιστή. Μετά την αρχικοποίησή της, πέφτει σε λήθαργο, αναμένοντας μία διεργασία - πελάτη να επικοινωνήσει μαζί της και να της ζητήσει κάποια υπηρεσία. Μία διεργασία - πελάτης αρχίζει να εκτελείται, είτε στο ίδιο σύστημα, είτε σε κάποιο απομακρυσμένο, το οποίο συνδέεται με τον υπολογιστή στον οποίο τρέχει ο εξυπηρετητής μέσω δικτύου. Η διεργασία πελάτης στέλνει μια αίτηση, μέσω του δικτύου, στον εξυπηρετητή, ζητώντας του κάποιου είδους υπηρεσία ( π.χ. μεταφορά αρχείου, απομακρυσμένη εκτύπωση, ανάγνωση και αποστολή mail και άλλες ). Ταυτόχρονα με την εξυπηρέτηση κάποιου πελάτη, ο server έχει την δυνατότητα να δέχεται και αιτήσεις άλλων πελατών προς εξυπηρέτηση. Όταν ο εξυπηρετητής τελειώσει με όλους τους πελάτες, τότε ξαναπέφτει σε λήθαργο, περιμένοντας για μια καινούργια αίτηση και η διαδικασία ξαναρχίζει από την αρχή. Ορίζουμε ως σύνδεση, τον επικοινωνιακό δίαυλο μεταξύ δύο διεργασιών. Την σύνδεση μπορούμε να την θεωρήσουμε ως μία πεντάδα, που περιγράφεται ως εξής : πρωτόκολλο, τοπική-διεύθυνση, τοπική-διεργασία, απομακρυσμένη-διεύθυνση, απομακρυσμένη-διεργασία Το πρωτόκολλο αναφέρεται στο σύνολο των κανόνων που διέπουν την επικοινωνία. Η τοπική-διεύθυνση και απομακρυσμένη-διεύθυνση, προσδιορίζουν την ταυτότητα των υποδικτύων και των υπολογιστών, στους οποίους εκτελούνται οι επικοινωνούσες διεργασίες. Η τοπική-διεργασία και απομακρυσμένη-διεργασία, προσδιορίζουν την ταυτότητα των διεργασιών που θα επικοινωνούν, καθώς σε έναν υπολογιστή, μπορούν να εκτελούνται περισσότερες της μιας διεργασίες. Κάθε μία από αυτές τις διεργασίες που εκτελούνται στον ίδιο host και που χρειάζονται επικοινωνία μέσω δικτύου, λαμβάνει έναν 16-bit ακέραιο αριθμό, ο οποίος αναπαριστά την θύρα ( port number ) της διεργασίας και κατ επέκταση, της υπηρεσίας. Ορίζουμε, επίσης ως μισή σύνδεση ( half association ), είτε το σύνολο πρωτόκολλο, τοπικήδιεύθυνση, τοπική-διεργασία, είτε το σύνολο πρωτόκολλο, απομακρυσμένη-διεύθυνση, απομακρυσμένη-διεργασία. Η μισή σύνδεση ονομάζεται αλλιώς και socket. Oρισμός : Socket είναι το ένα άκρο, από έναν επικοινωνιακό δίαυλο διπλής κατεύθυνσης, μεταξύ δύο προγραμμάτων που εκτελούνται στο δίκτυο. Περιλαμβάνει το πρωτόκολλο, την διεύθυνση και τον αριθμό θύρας του άκρου. Η έκδοση 4.1cBSD του Unix ( 1982 ), για τους υπολογιστές VAX, απ το πανεπιστήμιο του Berkeley, πρωτοεισήγαγε το socket interface σαν μια μέθοδο επικοινωνίας απομακρυσμένων διεργασιών. Είχαν αρχικά υλοποιηθεί στην γλώσσα C του Unix, αλλά η απήχηση που γνώρισαν, επέβαλε την μεταφορά τους τόσο σε άλλα λειτουργικά συστήματα ( π.χ. Winsock library για τα Microsoft Windows ), όσο και σε άλλες γλώσσες προγραμματισμού ( π.χ. Java ). Κάθε πρόγραμμα διαβάζει από και γράφει σε ένα socket, με τρόπο παρόμοιο της εγγραφής και ανάγνωσης αρχείων του file system. Υπάρχουν δύο είδη sockets : Tο πρώτο ονομάζεται TCP ( Transmission Control Protocol ) socket και είναι μια υπηρεσία προσανατολισμένη στην σύνδεση ( connection-oriented service ). Μπορούμε να το θεωρήσουμε ανάλογο της τηλεφωνικής υπηρεσίας, στην οποία, μετά την εγκαθίδρυση μιας

2 σύνδεσης μεταξύ δύο συνομιλητών, αυτή χρησιμοποιείται μέχρι το πέρας της συζητήσεως τους. Το άλλο είδος ονομάζεται UDP (Unreliable Datagram Protocol ) socket και είναι μια υπηρεσία χωρίς σύνδεση ( connectionless service ). To ανάλογο, σε αυτήν την περίπτωση, είναι το ταχυδρομείο : μπορούμε να στείλουμε πολλά πακέτα στον ίδιο παραλήπτη, αλλά δεν είναι σίγουρο ότι όλα θα ακολουθήσουν την ίδια διαδρομή ( σύνδεση ) για να φτάσουν στον προορισμό τους. Μία ακόμη σημαντική διαφορά, μεταξύ των παραπάνω δύο ειδών, είναι ότι τα TCP sockets εξασφαλίζουν μια αξιόπιστη μεταφορά της πληροφορίας : ότι αποστέλλεται από το ένα άκρο είναι σίγουρο ότι θα φτάσει στο άλλο. Στο UDP socket όμως δεν συμβαίνει αυτό. Είναι στην ευθύνη του αποστολέα να ελέγξει ότι αυτό που έστειλε, το έλαβε τελικά ο παραλήπτης και δεν χάθηκε στον δρόμο. Από την άλλη, η σύνδεση με TCP socket απαιτεί την ανταλλαγή τριών πακέτων χειραψίας ( handshake packets ) και είναι πιο χρονοβόρα στην αρχικοποίησή της από την αντίστοιχη με UDP datagrams. Οι προηγούμενες δύο διαφορές καθορίζουν τελικά και την χρήση των δύο αυτών ειδών. Για την αποφυγή σύγχυσης, να σημειώσουμε ότι ειδικά στην Java, ο όρος Socket χρησιμοποιείται για τα TCP sockets, στην ονοματολογία των κλάσεων και των μεθόδων, ενώ για την δήλωση των UDP sockets, χρησιμοποιείται ο όρος Datagram. Στον παρακάτω πίνακα βλέπουμε τις διάφορες κλάσεις για τα sockets που περιέχονται στο πακέτο java.net καθώς και το είδος τους. Μηχανισμός / Κλάση Περιγραφή Socket TCP άκρο - πελάτης ServerSocket ΤCP άκρο - εξυπηρετητής DatagramSocket UDP άκρο ( client & server ) DatagramPacket UDP πακέτο ΙnetAddress Διεύθυνση Internet Protocol ( IP ) URL Uniform Resource Locator URLConnection Σύνδεση με αντικείμενο του web Ανάπτυξη Client - Server εφαρμογής με TCP sockets Μία από τις κλασικές υπηρεσίες που προσφέρονται στο δίκτυο, είναι η υπηρεσία αντήχησης ( echo service ). Αυτή χρησιμοποιεί για την σύνδεση TCP sockets και αριθμό θύρας 7, ενώ σκοπός της είναι να μεταδώσει πίσω στον πελάτη, που θα ζητήσει τέτοια υπηρεσία, ό,τι αυτός της στείλει. Δεν επεξεργάζεται δηλ. την είσοδο, απλά της στέλνει πάλι πίσω. Μία τέτοια εφαρμογή θα αναπτύξουμε εδώ σαν παράδειγμα, τόσο το πρόγραμμα της πλευράς του πελάτη, όσο και αυτό της πλευράς του εξυπηρετητή, μόνο που θα χρησιμοποιήσουμε έναν άλλο αριθμό θύρας, τον O πελάτης ( client ) Μια τυπική αλληλουχία βημάτων που συνήθως ακολουθούνται για το πρόγραμμα του client είναι η εξής : Socket() getinputstream() και getoutputstream() read() και write() - αρχικοποίηση και σύνδεση στον server - σύνδεση του socket με τον στάνταρ μηχανισμό εισόδου/εξόδου στη Java, δηλ. τα streams - ανάγνωση και εγγραφή στο - συνδεδεμένο με το

3 socket - stream.. - ακολουθούν και άλλες αναγνώσεις/εγγραφές close() - κλείνει το socket και απελευθερώνεται ο αντίστοιχος πόρος του συστήματος. Ας αναλύσουμε περαιτέρω τα βήματα που αναφέραμε, πριν να παραθέσουμε το πλήρες πρόγραμμα του πελάτη. Η δημιουργία ενός αντικειμένου της κλάσης Socket, γίνεται, πολύ απλά, καλώντας έναν από τους οκτώ (!) κατασκευαστές ( constructors ) της κλάσης. Στο πρόγραμμά μας γίνεται με τον εξής κώδικα : Socket s = new Socket(args[0], 8205); δηλ. φτιάξε το αντικείμενο s, που είναι socket και σύνδεσέ το στην ΙΡ διεύθυνση που καθορίζεται από την πρώτη παράμετρο (args[0] - στην συγκεκριμένη περίπτωση, η ΙΡ διεύθυνση παρέχεται από τον χρήστη, ως το πρώτο όρισμα στο command line, με την εντολή εκτέλεσης του προγράμματος ). Εφόσον η σύνδεση είναι επιτυχής, μπορούμε να λάβουμε τα streams εισόδου/εξόδου του socket που δημιουργήσαμε, για να επιτελέσουμε στην συνέχεια Ι/Ο. Αυτό γίνεται γιατί, όπως προαναφέραμε, ο ενοποιημένος ( και μοναδικός ) μηχανισμός για Ι/Ο προγραμμάτων σε Java είναι τα streams. Για τον σκοπό αυτό, χρησιμοποιούμε τις μεθόδους getinputstream()και getoutputstream()που διαθέτει η κλάση Socket, ως εξής : DataInputStream sin = new DataInputStream(s.getInputStream()); DataOutputStream sout = new DataOutputStream(s.getOutputStream()); Μετά την αρχικοποίηση και την λήψη των streams του socket, έχουμε είσοδο/έξοδο με τις γνωστές μεθόδους των streams. Π.χ. : sout.println( Hello ); // Έξοδος στο socket String message = sin.readline(); // Είσοδος από το // socket Επίσης μπορούμε να λάβουμε από το ίδιο το socket s, μια σειρά από πληροφορίες σχετικές μ αυτό, όπως την ΙΡ διεύθυνση που είναι συνδεδεμένο, καθώς και το port. System.out.println( Connected to + s.getinetaddress() + : + s.getport()); Όταν τελειώσουμε με το Ι/Ο, καλό είναι να απελευθερώνουμε το socket που είχαμε ανοίξει, γιατί, όπως και οι χειριστές αρχείων ( file handlers ), είναι πολύτιμος πόρος του συστήματος και μπορεί να εξαντληθεί.... finally if ( s!= null) s.close(); catch(ioexception ioe) ; Ακολουθεί το ολοκληρωμένο πρόγραμμα του client μέρους της υπηρεσίας echo : // The client program for the echo service // Written using JDK, ver

4 import java.io.*; import java.net.*; public class EchoClient public static void echoclient(datainputstream sin, DataOutputStream sout) throws IOException DataInputStream in = new DataInputStream(System.in); PrintStream out = new PrintStream(sout); String line; while(true) line = ""; // read keyboard input and write to TCP socket line = in.readline(); out.println(line); catch(ioexception e) System.out.println(e.getMessage()); // read TCP socket and write to terminal... line = sin.readline(); System.out.println(line); catch(ioexception e) System.out.println(e.getMessage()); // End of echoclient() function... public static void main(string[] args) Socket s = null; // Create the socket to communicate with "echo" // on the specified host s = new Socket(args[0], 8205); // Create streams for reading and writing lines // of text from and to this socket DataInputStream sin = new DataInputStream(s.getInputStream()); DataOutputStream sout = new DataOutputStream(s.getOutputStream()); // Tell the user that we ve connected System.out.println("Connected to " + s.getinetaddress() + ":" + s.getport()); // Use the echo feature... echoclient(sin, sout);

5 catch(ioexception e) System.out.println(e); // Always be sure to close the socket... finally if (s!= null) s.close(); catch(ioexception e) System.out.println("Closing socket..."); // End of main() // End of class Να παρατηρήσουμε σε αυτό το σημείο, ότι οι εντολές που σχετίζονται με αρχικοποίηση του socket και των streams αυτού, θα πρέπει να περιέχονται στο σώμα try εντολής κι αυτό γιατί υπάρχει περίπτωση να μην είναι εφικτή η σύνδεση, οπότε θα έχουμε και έγερση μιας εξαίρεσης IOException. Σε μια τέτοια περίπτωση, δεν θα πρέπει να πραγματοποιήσουμε λειτουργίες Ι/Ο σε μη συνδεδεμένο socket. Επίσης, η μέθοδος close() είναι θεμιτό να καλείται σε κάθε περίπτωση, γι αυτό και την καλούμε μέσα από την finally. Ο εξυπηρετητής ( server ) Μια τυπική TCP εφαρμογή εξυπηρετητή ανοίγει ένα καλά - γνωστό/διαδεδομένο port για την λήψη αιτήσεων για σύνδεση και ύστερα δημιουργεί μία διεργασία-παιδί, ή ένα ξεχωριστό νήμα εκτέλεσης για να εκτελέσει την υπηρεσία. Το port που ανοίγει ο server ονομάζεται καλάγνωστό, γιατί αυτό χρησιμοποιεί ο οποιοσδήποτε πελάτης για να συνδεθεί στον εξυπηρετητή. Επίσης λέμε ότι ο server ακούει το port στο οποίο αρχικοποιεί το socket του, για καινούργιες συνδέσεις, δηλ. καινούργιους πελάτες. Γι αυτό το λόγο, το socket ονομάζεται listening socket. Θα πρέπει να δοθεί προσοχή στην επιλογή του αριθμού θύρας της υπηρεσίας, ο οποίος δεν θα πρέπει να είναι ήδη σε χρήση. Ο εξυπηρετητής, μόλις δεχθεί την σύνδεση καινούργιου πελάτη, γεννά μια καινούργια διεργασία - νήμα, για την εξυπηρέτηση των αιτήσεων του. Με αυτόν τον τρόπο, καθίσταται δυνατή η παράλληλη εξυπηρέτηση παλιών και η αποδοχή νέων πελατών. Παρακάτω θα αναπτύξουμε τον αντίστοιχο εξυπηρετητή του EchoClient, ο οποίος αποτελείται από δύο κλάσεις : την κλάση EchoServer, για την αρχικοποίηση του listening-socket και την κλάση EchoThread, η οποία κληρονομεί την κλάση Thread της Java. Αντικείμενα της τελευταίας δημιουργούνται κάθε φορά που εντοπίζεται από τον EchoServer ένας νέος πελάτης, αναλαμβάνοντας την εξυπηρέτησή του. Η αλληλουχία βημάτων για το πρόγραμμα του server είναι η εξής : ServerSocket() - αρχικοποίηση του listening socket accept() - αναμονή και εντοπισμός καινούργιου πελάτη new Thread - δημιουργία καινούργιου thread για την εξυπηρέτηση πελάτη getinputstream() και - το καινούργιο socket που επιστρέφεται από την accept getoutputstream() συνδέεται με τον στανταρ μηχανισμό εισόδου/εξόδου στη Java, δηλ. τα streams read() και write() - ανάγνωση και εγγραφή στο - συνδεδεμένο με το socket - stream.. - ακολουθούν και άλλες αναγνώσεις/εγγραφές close() - κλείνει το socket ( όχι το listening ) και

6 απελευθερώνεται ο αντίστοιχος πόρος του συστήματος. Η κλάση ServerSocket περιέχεται στο πακέτο java.net και παρέχει μια ανεξάρτητη συστήματος υλοποίηση σύνδεσης TCP socket, απ την πλευρά του εξυπηρετητή, με βάση το client/server μοντέλο. Το αντικείμενο αυτής της κλάσης συνδέει το πρόγραμμα του εξυπηρετητή με κάποια θύρα του συστήματος, για να μπορεί αυτός στην συνέχεια να ακούει για την σύνδεση νέων πελατών. Στον κατασκευαστή του αντικειμένου προσδιορίζεται ο αριθμός θύρας και σε περίπτωση που δεν χρησιμοποιείται ήδη από άλλη υπηρεσία, δημιουργείται το αντικείμενο. Αν όμως η θύρα είναι κατειλημμένη, τότε εγείρεται εξαίρεση. Ο κώδικας είναι ως εξής : ServerSocket serversoc = new ServerSocket(8205); Αν το αντικείμενό μας κατασκευαστεί επιτυχώς, τότε ο server είναι έτοιμος για την αποδοχή καινούργιου πελάτη : Socket incoming = serversoc.accept(); Η μέθοδος accept() μπλοκάρει το νήμα απ το οποίο έχει κληθεί, μέχρι να παρατηρηθεί δραστηριότητα στο listening-socket, δηλ. μέχρι να συνδεθεί καινούργιος πελάτης. Όταν συμβεί το τελευταίο, τότε η accept() επιστρέφει ένα καινούργιο Socket ( όχι listening-socket ) με το οποίο αρχίζει πλέον η επικοινωνία. Αυτό συμβαίνει για να μπορούμε να συνεχίσουμε να ακούμε απ το listening socket και άλλους πελάτες, χωρίς να χρειάζεται να αλλάξουμε τον αριθμό της θύρας ( well-known ). Επίσης, κατασκευάζεται ένα νέο αντικείμενο τύπου EchoThread και αρχίζει η εκτέλεσή του : EchoThread et = new EchoThread(incoming); et.start(); Στην κατασκευή του νέου thread περνούμε σαν παράμετρο το socket που επέστρεψε η accept(), για να λάβουμε ύστερα, τα συνδεδεμένα με αυτό, streams εισόδου/εξόδου : DataInputStream in = new DataInputStream(s.getInputStream()); PrintStream out = new PrintStream(s.getOutputStream()); Από εκεί και πέρα ακολουθεί Ι/Ο στο socket ( μέσω των streams του ), σαν να είχαμε Ι/Ο σε αρχείο. Στο τέλος, το thread εξυπηρέτησης του πελάτη κλείνει το socket που μας είχε επιστρέψει η accept ( μέθοδος close() ) και τερματίζει την εκτέλεσή του. Το listening socket παραμένει ανοικτό, απελευθερώνεται όμως πριν τον τερματισμό του ίδιου του EchoServer. Πάλι σημειώνουμε την χρήση των μπλοκ try, για να αποφύγουμε την περίπτωση της χρησιμοποίησης κάποιου πόρου ( στην περίπτωσή μας socket ), ο οποίος πιθανόν δεν μας έχει διατεθεί από το σύστημα. Ακολουθεί το πλήρες πρόγραμμα του εξυπηρετητή της υπηρεσίας echo, με τις δύο κλάσεις του. // Server program for the echo service. An alternative // to the standard echo at port 7. We use TCP port // Written using JDK 1.1.5, Petros import java.net.*; import java.io.*; import java.lang.*; import java.util.*; public class EchoServer

7 public static void main(string args[]) // initialize the network connection ServerSocket serversoc = new ServerSocket(8205); // Now sit in an infinite loop and wait for // requests... while (true) // accept the message Socket incoming = serversoc.accept(); // spawn a child to serve the request EchoThread et = new EchoThread(incoming); et.start(); catch (IOException e) System.out.println("Error : " + e.getmessage()); // End of main // End of class EchoServer() class EchoThread extends Thread // The socket we are writing to Socket s; // Our constructor EchoThread(Socket s) this.s = s; // The run method of the thread... public void run() boolean finished = false; // Create streams for reading / writing lines of text to the socket DataInputStream in = new DataInputStream(s.getInputStream()); PrintStream out = new PrintStream(s.getOutputStream()); // Print a message: System.out.println("Client from : " + s.getinetaddress() + " port " + s.getport()); // now get the input from the socket... while(!finished) String st = in.readline(); // Send the same back to client out.println(st); // Write it to the screen as well System.out.println(st);

8 // If the input was 'quit' then exit... if (st.equals("quit")) finished = true; System.out.println("Thread exiting..."); catch (IOException e) System.out.println("Error : " + e.getmessage()); // Always be sure to close the socket... finally if (s!= null) s.close(); catch(exception e) System.out.println("Error : " + // End of run e.getmessage()); // End of class EchoThread Κατασκευαστές και Mέθοδοι της κλάσης Socket Παραθέτουμε, ενδεικτικά, μερικούς από τις μεθόδους και τους κατασκευαστές της κλάσης Socket. Κατασκευαστές Socket(InetAddress, int) Δημιουργεί ένα stream ( TCP ) socket και το συνδέει στο port και την ΙΡ διεύθυνση που καθορίζονται ως παράμετροι. Socket(String, int) Δημιουργεί ένα stream ( TCP ) socket και το συνδέει στο port του host, του οποίου το όνομα καθορίζεται στις παραμέτρους. Μέθοδοι close() Κλείσιμο του socket ( απελευθέρωσή του πίσω στο σύστημα ). getinetaddress() Επιστρέφει την διεύθυνση του απομακρυσμένου host στην οποία το socket είναι συνδεδεμένο. getinputstream() Επιστρέφει ένα stream εισόδου γι αυτό το socket. getlocaladdress() Επιστρέφει την διεύθυνση του host στον οποίο το socket αρχικοποιήθηκε ( την τοπική διεύθυνση ). getlocalport() Επιστρέφει τον αριθμό θύρας ( τοπικό ) του host στον οποίο το socket αρχικοποιήθηκε. getoutputstream() Επιστρέφει ένα stream εξόδου αυτού του socket getport() Επιστρέφει τον αριθμό θύρας του απομακρυσμένου host στον οποίο το socket έχει συνδεθεί.

9 Κατασκευαστές και Μέθοδοι της κλάσης ServerSocket Παραθέτουμε, ενδεικτικά, μερικούς από τις μεθόδους και τους κατασκευαστές της κλάσης ServerSocket. Κατασκευαστές ServerSocket(int) Δημιουργεί ένα server socket στη θύρα της οποίας ο αριθμός καθορίζεται απ την παράμετρο. Αν ο αριθμός είναι το 0, τότε αφήνεται στο σύστημα η επιλογή μιας ελεύθερης ( μη χρησιμοποιούμενης ) θύρας. ServerSocket(int, int) Δημιουργεί ένα server socket στην θύρα της οποίας ο αριθμός καθορίζεται απ την πρώτη παράμετρο, ενώ επιτρέπει τόσες συνδέσεις να περιμένουν στην ουρά του port, μέχρι να γίνουν αποδεκτές, όσες η δεύτερη παράμετρος. Και εδώ, το 0 επιλέγει μια ελεύθερη θύρα. Μέθοδοι accept() Ακούει το server socket για πιθανή σύνδεση που θα γίνει και την αποδέχεται. close() Κλείνει το server socket. getinetaddress() Επιστρέφει την τοπική διεύθυνση αυτού του server socket. getlocalport() Επιστρέφει το port που αυτό το server socket ακούει Περιγραφή και ορισμός των Datagrams Σε αντίθεση με την ανάπτυξη εφαρμογών με TCP sockets, όπου ο διαχωρισμός των ρόλων μεταξύ πελάτη και εξυπηρετητή είναι σαφής, στα UDP Datagrams η επικοινωνία που συνήθως αναπτύσσεται είναι peer-to-peer, δηλ. ίσος προς ίσον. Δεν έχουμε δηλ. συχνά πλήρη διάκριση των ρόλων μεταξύ των δύο επικοινωνουσών διεργασιών και τα δύο,κατ όνομα, προγράμματα του πελάτη και του εξυπηρετητή λειτουργούν με παρόμοια διαδικασία βημάτων. Πρέπει, όμως, κατά την σχεδίαση συστημάτων, να έχουμε κατά νου, ότι, ενώ τα TCP sockets διακινούν την πληροφορία αξιόπιστα και η λήψη της από το άλλο άκρο γίνεται με την ίδια σειρά με την οποία απεστάλη ( με όποιο πρόσθετο χρονικό, επικοινωνιακό και υπολογιστικό κόστος συνεπάγονται οι επιβεβαιώσεις και αναμεταδόσεις που απαιτούνται για αυτό ), στα datagrams, τα πακέτα ( packets ) που μετακινούνται μέσω του δικτύου δεν έχουν τις προηγούμενες ιδιότητες. Επίσης, ενώ στα TCP sockets η προς αποστολή πληροφορία, δεν περιείχε, αυτή καθ αυτή, την διεύθυνση και τη θύρα προορισμού, καθώς είχε ήδη προηγηθεί ολόκληρη διαδικασία σύνδεσης και εξασφάλισης συγκεκριμένου καναλιού για την διακίνησή της, στα UDP datagrams, τα πακέτα, εκτός από την χρήσιμη πληροφορία, περιέχουν και την διεύθυνση του host-προορισμού και την θύρα του. Αυτό είναι φυσικό, λόγω της απουσίας συγκεκριμένης διαδρομής από τον έναν υπολογιστή στον άλλο. Ο ορισμός του datagram ακολουθεί : Ορισμός : Datagram είναι ένα ανεξάρτητο, πλήρως προσδιορίσιμο ( δηλ. με διεύθυνση και αριθμό θύρας ) μήνυμα, του οποίου η άφιξη στον παραλήπτη, ο χρόνος της άφιξης και το περιεχόμενο δεν είναι εγγυημένα. Όσο και αν φαίνεται περίεργο, υπάρχουν εφαρμογές που δεν απαιτούν τόσο αυστηρή και τέλεια επικοινωνία, με το συνεπαγόμενο κόστος, όπως αυτή που προσφέρουν τα TCP

10 sockets. Σαν παράδειγμα, μπορούμε να αναφέρουμε το γνωστό πρόγραμμα PING, του οποίου σκοπός είναι ο έλεγχος της ποιότητας του επικοινωνιακού διαύλου μεταξύ δύο υπολογιστών. Στην πραγματικότητα, το PING προσπαθεί να ελέγξει και να μετρήσει τον αριθμό των πακέτων που χάθηκαν ή απορρίφθηκαν, για τον προσδιορισμό της ποιότητας της σύνδεσης. Αυτό δεν θα ήταν δυνατό με ένα πρωτόκολλο σαν το TCP, που διορθώνει αυτά ακριβώς τα λάθη Ανάπτυξη δικτυακής εφαρμογής με UDP Datagrams Όπως αναφέραμε και προηγουμένως, οι έννοιες του πελάτη και του εξυπηρετητή δεν είναι και τόσο διακριτές, όταν έχουμε υλοποίηση με UDP datagrams. Επίσης, το βάρος τώρα δεν δίνεται τόσο στην σύνδεση ( δεν υπάρχει άλλωστε με την τυπική έννοια ), αλλά στη σωστή δημιουργία του πακέτου που πρόκειται να σταλεί, έτσι ώστε να περιέχει όλες τις απαραίτητες πληροφορίες, μαζί με τα προς αποστολή δεδομένα. Ως παράδειγμα εφαρμογής δικτύου με UDP πρωτόκολλο, παραθέτουμε δύο προγράμματα : το πρώτο, o TimeClient, είναι ένα πρόγραμμα με το οποίο μπορεί κανείς να κάνει ερώτηση σε απομακρυσμένο host, ζητώντας του μάθει την εκεί ώρα. Αντίστοιχα ο TimeServer παρέχει αυτήν την υπηρεσία, καθώς εκτελείται συνέχεια στον απομακρυσμένο host. Για τον αριθμό θύρας της υπηρεσίας διαλέξαμε τον 8505 κατά τυχαίο τρόπο, αλλά μπορεί να χρησιμοποιηθεί και οποιοσδήποτε άλλος διαθέσιμος. Θα χρησιμοποιήσουμε τα αντικείμενα δύο κλάσεων : την κλάση DatagramSocket, που υλοποιεί την επικοινωνία με UDP datagrams και την κλάση DatagramPacket, που αποτελεί το καλούπι με το οποίο θα φτιάχνουμε τα προς αποστολή πακέτα. Ο πελάτης Πρώτα πρέπει να κατασκευάσουμε το αντικείμενο της διεύθυνσης του host που τρέχει ο TimeServer. Αυτή παρέχεται από τον χρήστη με την εντολή εκτέλεσης του προγράμματος από την γραμμή εντολών (π.χ. #java TimeClient Αξίζει να αναφέρουμε εδώ οτι η διεύθυνση είναι η default διεύθυνση του τοπικού μηχανήματος την οποία μπορούμε και να πάρουμε μέσω της μεταβλητής localhost). To αντικείμενο της διεύθυνσης ανήκει στην κλάση InetAddress, της οποίας χρησιμοποιούμε την μέθοδο getbyname(string), για να το μετατρέψουμε από την αλφαριθμητική μορφή που το λαμβάνουμε στον τύπο InetAddress : InetAddress hostaddress = InetAddress.getByName(args[0]); Κατόπιν δημιουργούμε το datagram socket, μέσω του οποίου θα στείλουμε το πακέτο με την αίτηση και θα λάβουμε αυτό με την απάντηση. Ο παρακάτω κώδικας εκτελεί ακριβώς αυτό : DatagramSocket serversoc = new DatagramSocket(); Ο κατασκευαστής που χρησιμοποιήσαμε, διαλέγει από μόνος του κάποιο ελεύθερο port στο μηχάνημα που τρέχει ο πελάτης, για να το συνδέσει με το datagram socket. Να σημειώσουμε εδώ, ότι δεν χρειάζεται να συνδέσουμε το datagram socket με streams εισόδου/εξόδου, αφού δεν έχουμε Ι/Ο σε κάποιο κανάλι, αλλά αποστολή και λήψη μεμονωμένων πακέτων. Ακολουθεί κατασκευή του πακέτου της αίτησης. Ανήκει στην κλάση DatagramPacket, ο κατασκευαστής της οποίας δέχεται 4 ορίσματα : έναν buffer, ο οποίος αποτελεί τα δεδομένα σε μορφή πίνακα από bytes ( δεν είναι String ή array από χαρακτήρες ), το μέγεθος του προηγούμενου πίνακα, την InetAddress διεύθυνση προορισμού, καθώς και τον αριθμό θύρας του προορισμού. Στην περίπτωση της αίτησης στον TimeServer, ο buffer δεν περιέχει δεδομένα, γιατί δεν θέλουμε να στείλουμε κανενός είδους χρήσιμη πληροφορία. DatagramPacket packet; byte[] message = new byte[256]; packet = new DatagramPacket(message, 256, hostaddress, port);

11 Η αποστολή γίνεται, πολύ απλά, καλώντας την μέθοδο send(datagrampacket) του datagram socket : serversoc.send(packet); Στη συνέχεια έχουμε αναμονή για λήψη της απάντησης με την μέθοδο receive(datagrampacket) του datagram socket. serversoc.receive(packet); Η receive() μπλοκάρει το νήμα απ το οποίο έχει κληθεί, μέχρι να λάβει κάποιο datagram πακέτο στο port που έχει ανοίξει το datagram socket. Χρειάζεται όμως προσοχή, καθώς το UDP πρωτόκολλο δεν είναι αξιόπιστο και το πακέτο με την απάντηση μπορεί να χαθεί. Γι αυτό το λόγο συνίσταται η χρησιμοποίηση ενός χρονομέτρου, το οποίο θα ξεμπλοκάρει το νήμα, για να τερματιστεί ομαλά η εφαρμογή. Τέλος, με την μέθοδο getdata() της κλάσης DatagramPacket, λαμβάνουμε τον πίνακα από bytes με την χρήσιμη πληροφορία, τον οποίο μετατρέπουμε σε String για την εκτύπωση. Οι μέθοδοι getinetaddress() και getport() επιστρέφουν την διεύθυνση και τον αριθμό θύρας αντίστοιχα, του αποστολέα του πακέτου. Πριν το πρόγραμμα τερματιστεί, δεν ξεχνάμε να απελευθερώσουμε τους πόρους που είχαμε δεσμεύσει, δηλ. το DatagramSocket(). Ακολουθεί το πλήρες πρόγραμμα του TimeClient : // the TimeClient program in Java, // using UDP Datagrams... We will use UDP port 8505 // Petros import java.io.*; import java.net.*; public class TimeClient public static void timeclient(datagramsocket serversoc, InetAddress hostaddress, int port) // Declare a datagram packet... DatagramPacket packet; // Declare a byte array to send as a request and // receive the answer byte[] message = new byte[256]; // construct the packet with all the information // needed packet = new DatagramPacket(message, 256, hostaddress, port); System.out.println("Sending the request for the time..."); // since the socket is already open, send the // request serversoc.send(packet); // Now, get the reply System.out.println("Waiting for reply..."); serversoc.receive(packet); String mesg = new String(packet.getData(), 0); // Print the server's time System.out.println("Time at server's location " + packet.getaddress() + ":" + packet.getport() + is " + mesg ); catch(exception exc)

12 System.out.println("Error : " + exc.tostring()); // End of timeclient() public static void main(string args[]) // We use the command line to get the address of the // time server InetAddress hostaddress; int portnum; // Declare a datagram socket DatagramSocket serversoc; // initialize the network // Get network info hostaddress = InetAddress.getByName(args[0]); portnum = 8505; serversoc = new DatagramSocket(); timeclient(serversoc, hostaddress, portnum); // Don't forget to release the resource... // by closing the datagram socket. if (serversoc!= null) serversoc.close(); catch (UnknownHostException uhe) System.out.println("Unknown host : " + uhe.tostring()); catch (SocketException exc) System.out.println("Error : " + exc); // End of main() // End of class Να σημειώσουμε και εδώ την χρήση μπλοκ try, για την αντιμετώπιση πιθανών προβλημάτων στην εκτέλεση κατασκευαστών και των μεθόδων. Ο εξυπηρετητής Ο server της υπηρεσίας ώρας δεν διαφέρει και πολύ από τον client. Η μεθοδολογία ανάπτυξής του μοιάζει πάρα πολύ με αυτή του πελάτη και μάλλον κουραστική θα ήταν μια εκτενέστερη ανάλυση. Εκείνο που αξίζει να πούμε, είναι ότι, εξαιτίας του ότι η παρεχόμενη υπηρεσία απαιτεί μικρής διάρκειας εξυπηρέτηση, δεν είναι απαραίτητο ο εξυπηρετητής να δημιουργεί για κάθε πελάτη και ένα καινούργιο νήμα, ώστε να μπορεί να δεχθεί και νέες συνδέσεις. Όλη η χρήσιμη πληροφορία της απάντησης μπορεί να χωρέσει μέσα σε ένα datagram packet, το οποίο έχει μέγιστο μέγεθος 8ΚBytes. Στα UDP datagrams, το βάρος της σχεδίασης μετατοπίζεται, από την εξυπηρέτηση του πελάτη, στην αυτόνομη εξυπηρέτηση των πακέτων. Μπορούμε, επίσης, να παρατηρήσουμε τον τρόπο με τον οποίο ο εξυπηρετητής ανοίγει το datagram socket, για την λήψη των πακέτων : ο κατασκευαστής του αντικειμένου DatagramSocket δέχεται πλέον το port ( δηλ. το 8505 ), στο οποίο ακούει το socket, για νέες συνδέσεις. Ακολουθεί ο πλήρης κώδικας για το πρόγραμμα του εξυπηρετητή :

13 // The TimeServer for the time service... // Using UDP Datagrams and port number 8505 // Petros import java.io.*; import java.net.*; import java.util.*; // For the date functions... public class TimeServer public static void main(string args[]) // Our datagram socket for I/O DatagramSocket s = null; // Our packet for getting the request and sending the // reply DatagramPacket packet = null; // Create a receive buffer byte[] buf = new byte[256]; // Create the packet to receive the request packet = new DatagramPacket(buf, buf.length); // now create a socket to listen in s = new DatagramSocket(8505); catch(exception e) System.out.println("Error : " + e.tostring()); // Now sit in an infinite loop and reply to the // queries... while (true) // sit around and wait for a request s.receive(packet); catch (Exception e) System.out.println("Error : " + e.tostring()); // Get the client's info InetAddress cl = packet.getaddress(); int port = packet.getport(); System.out.println("Client from " + cl.gethostaddress() + ":" + port + " requested the time."); // Construct the response and sent it back... String localtime = new Date().toString(); // Convert the localtime string to an array // of bytes localtime.getbytes(0, localtime.length(), buf, 0); // Construct the packet packet = new DatagramPacket(buf, buf.length, cl, port); // Send it! s.send(packet); catch (Exception e) System.out.println("Error : " + e.tostring());

14 //End of while System.out.println("Client served..."); // End of main() // End of TimeServer class Κατασκευαστές και Mέθοδοι της κλάσης DatagramSocket Κατασκευαστές DatagramSocket() Κατασκευάζει ένα datagram socket και το συνδέει σε κάποιο διαθέσιμο port, στο μηχάνημα του τοπικού host. DatagramSocket(int) Κατασκευάζει ένα datagram socket και το συνδέει στη θύρα που προσδιορίζεται στην παράμετρο, στον τοπικό host. DatagramSocket(int, InetAddress) Κατασκευάζει ένα datagram socket και το συνδέει στην τοπική διεύθυνση και θύρα. Και οι τρεις κατασκευαστές εγείρουν μια SocketException εξαίρεση, σε περίπτωση αποτυχίας στη δημιουργία του αντικειμένου. Μέθοδοι close() Κλείνει το datagram socket. getlocaladdress() Gets the local address to which the socket is bound. Επιστρέφει την τοπική διεύθυνση, στην οποία το socket έχει συνδεθεί. getlocalport() Επιστρέφει τον αριθμό θύρας στο τοπικό μηχάνημα, στον οποίο το socket έχει συνδεθεί. receive(datagrampacket) Δέχεται ένα datagram πακέτο από αυτό το socket. send(datagrampacket) Στέλνει ένα datagram πακέτο από αυτό το socket Κατασκευστές και Mέθοδοι της κλάσης DatagramPacket Κατασκευαστές DatagramPacket(byte[], int) Κατασκευάζει ένα DatagramPacket, για λήψη πακέτων με μήκος αυτό που προσδιορίζεται από την δεύτερη παράμετρο. Η πρώτη παράμετρος είναι ο buffer στον οποίο θα τοποθετηθούν τα δεδομένα. DatagramPacket(byte[], int, InetAddress, int) Κατασκευάζει ένα datagram packet για αποστολή πακέτων. Η πρώτη παράμετρος είναι το δεδομένα σε μορφή πίνακα από bytes, η δεύτερη το μέγεθος του πίνακα, ενώ η τρίτη και τέταρτη παράμετρος είναι η διεύθυνση και ο αριθμός θύρας προορισμού αντίστοιχα. Μέθοδοι getaddress() Επιστρέφει την ΙΡ διεύθυνση του υπολογιστή, στον οποίο το datagram θα σταλθεί, ή απ τον οποίο έχει παραληφθεί.

15 getdata() Επιστρέφει τα δεδομένα του πακέτου που έλαβε, ή που θα στείλει. getlength() Επιστρέφει το μήκος των δεδομένων του πακέτου που έλαβε, ή που θα στείλει. getport() Επιστρέφει τον αριθμό θύρας του απομακρυσμένου host, απ τον οποίο το πακέτο ελήφθει, ή τον αριθμό θύρας του host, στον οποίο το πακέτο θα σταλεί.

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

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

Διαβάστε περισσότερα

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

ιαδικτυακές Εφαρµογές ιαδικτυακές Εφαρµογές µε Java2 Στοιχεία ικτυακής Επικοινωνίας Όροι IP address 32bit αριθµός που χρησιµοποιείται από το Internet Protocol για την παράδοση δεδοµένων στο σωστό υπολογιστή στο δίκτυο. Port

Διαβάστε περισσότερα

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

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης 14. Δικτύωση με Java Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να δημιουργείτε έναν ελάχιστο εξυπηρέτη TCP/IP σε Java Να δημιουργείτε έναν ελάχιστο εξυπηρετούμενο TCP/IP σε Java Να κατανοείτε πώς υλοποιούνται

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

(C) 2010 Pearson Education, Inc. All rights reserved. Connectionless transmission with datagrams. Connection-oriented transmission is like the telephone system You dial and are given a connection to the telephone of fthe person with whom you wish to communicate.

Διαβάστε περισσότερα

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

HY335 4ο Φροντιστήριο HY335 4ο Φροντιστήριο Δημιουργία ενός τοπικού δικτύου και επίδειξη προγραμμάτων τύπου client / server για TCP και UDP Fontas Fafoutis Ilias Tsompanidis Δημιουργία

Διαβάστε περισσότερα

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

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ / ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ «ΔΙΑΔΙΚΤΥΑΚΑ ΠΡΩΤΟΚΟΛΛΑ ΚΑΙ ΔΙΕΠΑΦΕΣ ΓΙΑ ΣΥΓΚΕΡΑΣΜΕΝΕΣ ΚΑΙ ΜΙΚΡΟΤΟΝΙΚΕΣ ΚΛΙΜΑΚΕΣ ΣΕ ΦΟΡΗΤΕΣ

Διαβάστε περισσότερα

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

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net Εργαστήριο Java Lab11 Αντικείµενο: Δίκτυα Πακέτο java.net H Java παρέχει ένα σύνολο από ενσωµατωµένες δυνατότητες για δηµιουργία εφαρµογών στο Internet ή σε τοπικά δίκτυα. H Java παρέχει τα stream sockets

Διαβάστε περισσότερα

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

ικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1 ικτύωσησε Java ιευθύνσεις IP Υποδοχές ρεύµατος Σειριακοποίηση αντικειµένων Υποδοχές δεδοµενογραφηµάτων Υποδοχές πολυεκποµπής Οµοιόµορφοι Εντοπιστές Πόρων Κατανεµηµένα Συστήµατα 08-1 Υποδοχές σε C ικτύωσησε

Διαβάστε περισσότερα

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

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα Η Υλοποίηση της Επικοινωνίας στα Κατανεµηµένα Συστήµατα ιαφάνειες στα πλαίσια του µαθήµατος: Κατανεµηµένα Συστήµατα Ε Εξάµηνο, Τµήµα Πληροφορικής και Τεχνολογίας Υπολογιστών, ΤΕΙ Λαµίας Πέτρος Λάµψας 2002

Διαβάστε περισσότερα

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

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2012-2013 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη Project 2012-2013 Υλοποίηση ενός chat server-client Παράδοση: 7/2/2013

Διαβάστε περισσότερα

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

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Java Sockets, Threads, Ασκήσεις Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων SOCKETS 2 Διαδιεργασιακή επικοινωνία με Sockets

Διαβάστε περισσότερα

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

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java Java Media Framework Ηβιβλιοθήκη JMF Εγκαθίσταται επιπρόσθετα στη Java Αναπαραγωγή πολυµέσων Αποστολή και λήψη πολυµέσων σε πραγµατικό χρόνο Γραφικά αντικείµενα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Εισαγωγή στον Κατανεμημένο Προγραμματισμό Εισαγωγή στον Κατανεμημένο Προγραμματισμό Περιεχόμενα Βασικές γνώσεις υποδοχών δικτύων Ιστορία του κατανεμημένου προγραμματισμού Εξέλιξη των πλαισίων ανάπτυξης επιχειρηματικών εφαρμογών Βασικές γνώσεις

Διαβάστε περισσότερα

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

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol HTTP Protocol Web and HTTP Βασικά Συστατικά: Web Server Web Browser HTTP Protocol Web Servers (1/2) Ένα πρόγραμμα (λογισμικό) που έχει εγκατασταθεί σε ένα υπολογιστικό σύστημα (έναν ή περισσότερους υπολογιστές)

Διαβάστε περισσότερα

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 12 Ροές και είσοδος/έξοδος αρχείων Τα δεδομένα εισόδου

Διαβάστε περισσότερα

//στο pin 3 του μικροελεγκτή συνδέουμε το control pin του ρελέ. WRITE 'I am on' στο SOCKET // λέω στον client ότι άναψα τη λάμπα

//στο pin 3 του μικροελεγκτή συνδέουμε το control pin του ρελέ. WRITE 'I am on' στο SOCKET // λέω στον client ότι άναψα τη λάμπα //server's pseudocode (φορτωμένος στην Arduino's flash) //αρχικό σετάρισμα SET IP=192.168.10.253; OPEN_SOCKET_WITH_ADRESS( IP, 5000) ; //σερβίρω τα requests που δέχομαι από τον client WHILE (TRUE) { if

Διαβάστε περισσότερα

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

Κεφάλαιο 7.3. Πρωτόκολλο TCP Κεφάλαιο 7.3 Πρωτόκολλο TCP Πρωτόκολλο TCP Το πρωτόκολλο Ελέγχου Μετάδοσης (Transmission Control Protocol, TCP) είναι το βασικό πρωτόκολο του Επιπέδου Μεταφοράς του μοντέλου TCP/IP. Παρέχει υπηρεσίες προσανατολισμένες

Διαβάστε περισσότερα

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη 9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή

Διαβάστε περισσότερα

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

Φροντιστήριο Α' Κατανεμημένα Συστήματα Επιμέλεια: Μπούτσης Ιωάννης Φροντιστήριο Α' Κατανεμημένα Συστήματα 2013-2014 Επιμέλεια: Μπούτσης Ιωάννης mpoutsis@aueb.gr Outline Επικοινωνία μέσω Java Sockets(υποδοχές) Παραλληλοποιημένος κώδικας: Threads(νήματα) Παραδείγματα Εισαγωγή

Διαβάστε περισσότερα

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

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux Προγραμματισμός με BSD Sockets σε περιβάλλον Linux Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Απρίλιος 2016 Περίγραμμα παρουσίασης 1 Εισαγωγή 2 Δικτυακά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1 Διαχείριση εργασιών fork(), exit(), exec() (βλ 2 ο Φροντ.) Επικοινωνία διεργασιών signals (βλ 2 ο Φροντ.) sockets και client/server,

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα. Javascript LCR example

Κατανεμημένα Συστήματα. Javascript LCR example Κατανεμημένα Συστήματα Javascript LCR example Javascript JavaScript All JavaScript is the scripting language of the Web. modern HTML pages are using JavaScript to add functionality, validate input, communicate

Διαβάστε περισσότερα

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #11 η : Διαδικτυακές Εφαρμογές με τη Java Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #11 η : Διαδικτυακές Εφαρμογές με τη Java Γαβαλάς Δαμιανός dgavalas@aegean.gr Όροι IP διεύθυνση (IP address) Ένας 32 bit αριθμός που χρησιμοποιείται

Διαβάστε περισσότερα

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

Πρωτόκολλα Διαδικτύου Πρωτόκολλα Διαδικτύου Μέρος 1ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Εισαγωγή στην Τεχνολογία TCP/IP To TCP/IP σημαίνει Transmission Control Protocol / Internet Protocol και θα μπορούσε να θεωρηθεί ότι πρόκειται

Διαβάστε περισσότερα

Εξοικείωση με τις εντολές ipconfig και ping

Εξοικείωση με τις εντολές ipconfig και ping Διαχείριση Δικτύων Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Ηπείρου Εργαστηριακή Άσκηση Εξοικείωση με τις εντολές ipconfig και ping Σημείωση : Η άσκηση αναφέρεται σε εντολές των Windows. Υπάρχουν παρόμοιες

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

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

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service) Socket *sopen(const int type, const int protocol, const char *host, const char *service) Στην περίπτωση ενός client, δημιουργεί μια νέα σύνδεση και κατασκευάζει μια δομή Socket που σχετίζεται με αυτή Σε

Διαβάστε περισσότερα

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

Πρωτόκολλα Διαδικτύου Πρωτόκολλα Διαδικτύου Ερωτήσεις Ασκήσεις Επικοινωνίες Δεδομένων Μάθημα 3 ο Ερωτήσεις 1. Τι είναι το intranet και ποια τα πλεονεκτήματα που προσφέρει; 2. Τι δηλώνει ο όρος «TCP/IP»; 3. Να αναφέρετε τα πρωτόκολλα

Διαβάστε περισσότερα

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

Επίπεδο δικτύου IP Forwading κτλ Επίπεδο δικτύου IP Forwading κτλ (IP για που το έβαλες) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Επίπεδο δικτύου (Network layer) Επίπεδο εφαρμογής (Application layer):

Διαβάστε περισσότερα

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

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 UDP vs TCP Το UDP είναι ένα connectionless, μη αξιόπιστο,

Διαβάστε περισσότερα

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

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ Στην java οι πληροφορίες αποθηκεύονται και ανακαλούνται/ανασύρονται µε τη χρήση ενός συστήµατος επικοινωνίας που χρησιµοποιεί την έννοια του stream (κανάλι επικοινωνίας). Σαν stream

Διαβάστε περισσότερα

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

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση. ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ / Γ- ΕΠΑ.Λ. ΗΜΕΡΟΜΗΝΙΑ: 21-02- 2016 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι. ΜΙΧΑΛΕΑΚΟΣ-Α.ΚΑΤΡΑΚΗ ΘΕΜΑ Α. A1. Να γράψετε το γράμμα καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη

Διαβάστε περισσότερα

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

Εργαστήριο Δικτύων Υπολογιστών Εργαστήριο Δικτύων Υπολογιστών 2 η Διάλεξη: TCP/UDP Δικτυακά πρωτόκολλα / εφαρμογές Ports Unix δικτυακές εντολές Transmission Control Protocol - TCP Πρωτόκολλο Mεταφοράς RFC 793 [Postel 1981] Xρησιμοποιεί

Διαβάστε περισσότερα

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου 4.1.1 Πρωτόκολλο TCP - Δομή πακέτου 1 / 38 Παράδειγμα Έστω ότι θέλουμε να αποστείλουμε ένα μήνυμα μέσω ηλεκτρονικού ταχυδρομείου. Αρχικά η εφαρμογή χρησιμοποιώντας τα πρωτόκολλα του επιπέδου εφαρμογής

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ EXCEPTIONS & EXCEPTION HANDLING Εξαιρέσεις (Exceptions) Γνωμικό της Μηχανικής Λογισμικού: το 80% της δουλειάς των μηχανικών

Διαβάστε περισσότερα

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

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης Επικοινωνία -RPC 1 Υλοποίηση RPC Προκειμένου να επιτευχθεί διαφάνεια στην κλήση RPC,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα ΕΞΑΙΡΕΣΕΙΣ Εξαίρεση (Exception): Ένα συµβάν κατά τον χρόνο εκτέλεσης (π.χ. αδυναµία ανοίγµατος αρχείου ή ανάγνωσης πληροφορίας, µη ύπαρξη αντικειµένου στη στοίβα) που απαιτεί ειδικό χειρισµό. Ονοµάζεται

Διαβάστε περισσότερα

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.1.1. Γενικές Αρχές 1. Τι ονοµάζεται επικοινωνιακό υποδίκτυο και ποιο είναι το έργο του; Το σύνολο όλων των ενδιάµεσων κόµβων που εξασφαλίζουν την επικοινωνία µεταξύ

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Αρχεία δεδομένων Το πακέτο java.io περιλαμβάνει περισσότερες από 60 κλάσεις και διασυνδέσεις για το χειρισμό αρχείων δεδομένων. Αρκετές από τις κλάσεις του

Διαβάστε περισσότερα

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

Δίκτυα Υπολογιστών Ενότητα 7: Internet Control Message Protocol - ICMP Δίκτυα Υπολογιστών Ενότητα 7: Internet Control Message Protocol - ICMP Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021 ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021 18 Οκτωβρίου 2006 Η εργασία είχε σαν στόχο να δημιουργηθεί ένα κατανεμημένο σύστημα ελέγχου συσκευών μιας κουζίνας.συγκεκριμένα

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 11: Χειρισμός Σφαλμάτων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) TEI Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) Ανάλυση Πρωτοκόλλων Τομέας Τηλεπικοινωνιών και Δικτύων Δρ. Αναστάσιος Πολίτης Καθηγητής Εφαρμογών anpol@teiser.gr

Διαβάστε περισσότερα

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

Διαβάστε περισσότερα

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

Πρωτόκολλο ARP. Γεωργιλά Χιονία Καθηγήτρια Πληροφορικής ΠΕ1901 Πρωτόκολλο ARP Γεωργιλά Χιονία Καθηγήτρια Πληροφορικής ΠΕ1901 Ποιο είναι το έργο του Πρωτοκόλλου Μετατροπής Διεύθυνσης (Address Resolution Protocol ARP) Κάνει δυναμική μετατροπή των IP διευθύνσεων σε φυσικές

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΑΠΑΝΤΗΣΕΙΣ ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΘΕΜΑ 1 ΑΠΑΝΤΗΣΕΙΣ Α. Να χαρακτηρίσετε κάθε μία από τις παρακάτω προτάσεις με Σωστό (Σ) ή Λάθος (Λ). 1. Στο μοντέλο

Διαβάστε περισσότερα

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

Διαβάστε περισσότερα

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 4: Τεχνικές Μετάδοσης ΜΕΤΑΓΩΓΗ Τεχνική µεταγωγής ονομάζεται ο τρόπος µε τον οποίο αποκαθίσταται η επικοινωνία ανάµεσα σε δύο κόµβους με σκοπό την

Διαβάστε περισσότερα

6. Εξαιρέσεις στη γλώσσα Java

6. Εξαιρέσεις στη γλώσσα Java 6. Εξαιρέσεις στη γλώσσα Java Με το τέλος αυτού του κεφαλαίου θα μπορείτε: Να ορίζετε εξαιρέσεις Να εξηγείτε γιατί είναι σημαντικός ο χειρισμός των εξαιρέσεων Να γράφετε κώδικα για να συλλαμβάνετε εξαιρέσεις

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

Διαβάστε περισσότερα

Network Address Translation (NAT)

Network Address Translation (NAT) HY335Α Δίκτυα Υπολογιστών Xειμερινό Εξάμηνο 2016-2017 Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Network Address Translation (NAT) Network Layer Private IP Addresses Πρόβλημα: o χώρος των ΙΡ διευθύνσεων

Διαβάστε περισσότερα

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

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ Στην java οι πληροφορίες αποθηκεύονται και ανακαλούνται/ανασύρονται µε τη χρήση ενός συστήµατος επικοινωνίας που χρησιµοποιεί την έννοια του stream (κανάλι επικοινωνίας). Σαν stream

Διαβάστε περισσότερα

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.5 Πρωτόκολλο IP 38. Τι είναι το πρωτόκολλο ιαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναµα

Διαβάστε περισσότερα

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

7.4 Πρωτόκολλο UDP. 3. Στη περίπτωση που ένα μήνυμα χωράει σε ένα τμήμα, χρησιμοποιούμε το πρωτόκολλο TCP. 7.4 Πρωτόκολλο UDP & Ερωτήσεις 1. ε ποιες περιπτώσεις χρησιμοποιείται το πρωτόκολλο UDP, εναλλακτικά του TCP; 2. ε τι είδους εφαρμογές χρησιμοποιείται συνήθως το πρωτόκολλο UDP; Να δώσετε παράδειγμα μιας

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

Διαβάστε περισσότερα

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

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7 Περιεχόμενα 1 Εισαγωγικές Έννοιες...12 1.1 Το Αντικείμενο στην καθημερινότητα...12 1.2 Το Αντικείμενο στον Προγραμματισμό...12 1.3 Επικοινωνία αντικειμένων...13 1.4 Κλάση (class) αντικειμένων...14 1.4.1

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

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

Λογισµικό (Software SW) Λειτουργικά Συστήµατα και ίκτυα Λογισµικό (Software SW) Λειτουργικά Συστήµατα και ίκτυα Μαζική επεξεργασία ή επεξεργασία κατά δέσµες (batch processing) Χώρος χρήστη Εργασίες (Jobs): Πρόγραµµα, δεδοµένα και οδηγίες Αποτελέσµατα Χώρος

Διαβάστε περισσότερα

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP Ημερομηνία παράδοσης 2 εβδομάδες μετά την έναρξη της άσκησης 1. Γενικά για το TCP/IP Η ομάδα πρωτοκόλλων TCP/IP επιτρέπει σε υπολογιστές όλων των μεγεθών, από

Διαβάστε περισσότερα

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

Φροντιστήριο Α' Κατανεμημένα Συστήματα Επιμέλεια: Μπούτσης Ιωάννης Φροντιστήριο Α' Κατανεμημένα Συστήματα 2011-2012 Επιμέλεια: Μπούτσης Ιωάννης mpoutsis@aueb.gr Outline Επικοινωνία μέσω Java Sockets(υποδοχές) Παραλληλοποιημένος κώδικας: Threads(νήματα) Παραδείγματα Εισαγωγή

Διαβάστε περισσότερα

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

Αρχεία και Ρεύματα. Αρχεία Αρχεία Αρχεία και Ρεύματα sequential files(σειριακά αρχεία) direct access(απ'ευθείας πρόσβασης) Ρεύματα (I/O Streams) Ένα ρεύμα είναι μια σειριακή ροή δεδομένων από μία πηγή προς έναν προορισμό. Όταν ένα

Διαβάστε περισσότερα

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

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

Διαβάστε περισσότερα

ιαδίκτυα & Ενδοδίκτυα Η/Υ

ιαδίκτυα & Ενδοδίκτυα Η/Υ ιαδίκτυα & Ενδοδίκτυα Η/Υ ΠΡΩΤΟΚΟΛΛΑ ΜΕΤΑΦΟΡΑΣ (Kεφ. 17) TCP Υπηρεσίες TCP Μορφή Επικεφαλίδας TCP Μηχανισµοί TCP Πολιτικές Υλοποίησης TCP Βιβλίο Μαθήµατος: Επικοινωνίες Υπολογιστών & εδοµένων, William

Διαβάστε περισσότερα

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

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP Κεφάλαιο 7 Διαδικτύωση-Internet 7.2 Τεχνολογία TCP/IP Τι δηλώνει ο όρος «TCP/IP»; Ο όρος TCP/IP αναφέρεται σε μια ομάδα ομοειδών πρωτοκόλλων που χρησιμοποιούνται για την επικοινωνία των δικτύων υπολογιστών

Διαβάστε περισσότερα

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

Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP); 7.5. Πρωτόκολλο IP Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναμα πακέτα που μεταφέρονται ανεξάρτητα

Διαβάστε περισσότερα

Πρωτόκολλο TCP Διάλεξη Ι

Πρωτόκολλο TCP Διάλεξη Ι Πρωτόκολλο TCP Διάλεξη Ι Εισαγωγή Οι υπηρεσίες μεταβίβασης δεδομένων ανάμεσα σε δύο επικοινωνούντες πόρους κατατάσσονται σε δύο κατηγορίες: Connectionless ή datagram Connection-oriented Οι υπηρεσίες της

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ακαδημαϊκό έτος 2010/2011 Επιμέλεια Ξενοφών Βασιλάκος Περιεχόμενα Φροντιστηρίου A. Πρωταρχικοί τύποι B. Είσοδος/ Έξοδος C. Πράξεις 2 Δήλωση / Αρχικοποίηση / Εκχώρηση A. Πρωταρχικοί

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

Διαβάστε περισσότερα

Εργαστήριο Ethereal: ICMP

Εργαστήριο Ethereal: ICMP Εργαστήριο Ethereal: ICMP Έκδοση:1.0 2005 J.F. Kurose, K.W. Ross Μετάφραση - Απόδοση: Σ. Τσακιρίδου Computer Networking: A Top-Down Approach Featuring the Internet Στο εργαστήριο αυτό θα εξετάσουµε µερικά

Διαβάστε περισσότερα

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ Ερωτήσεις 7.3 Πρωτόκολλο TCP 1. Τι είναι το τµήµα (segment) στο πρωτόκολλο TCP; Από ποια µέρη αποτελείται; 2. Για ποιο σκοπό χρησιµοποιείται ο Αριθµός ειράς στην επικεφαλίδα ενός segment TCP; 3. την περίπτωση

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

Διαβάστε περισσότερα

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος 09 1 http://creativecommons.org/licenses/by-nc-nd/3.

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος 09 1 http://creativecommons.org/licenses/by-nc-nd/3. Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET Εφαρµογές - Ιούλιος 09 1 Εισαγωγή στην τεχνολογία TCP/IP Τεχνολογία TCP/IP TCP/IP Πρωτόκολλα TCP/IP ή τεχνολογία TCP/IP ή τεχνολογία ιαδικτύου (Internet)( ιαδίκτυο

Διαβάστε περισσότερα

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1 Δημιουργία & Τερματισμός Διεργασιών Προγραμματισμός II 1 lalis@inf.uth.gr Δημιουργία νέας διεργασίας pid_t fork() Η fork δεν έχει παραμέτρους Δημιουργεί μια νέα διεργασία που είναι ένα αντίγραφο της διεργασίας

Διαβάστε περισσότερα

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

ΥΛΟΠΟΙΗΣΗ ΠΡΟΤΥΠΩΝ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΤΗ ΒΙΒΛΙΟΘΗΚΗ JAVA.NET ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΥ ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΟΥ ΤΕΕ 3 Ο ΣΥΝΕΔΡΙΟ ΣΤΗ ΣΥΡΟ-ΤΠΕ ΣΤΗΝ ΕΚΠΑΙΔΕΥΣΗ 145 ΥΛΟΠΟΙΗΣΗ ΠΡΟΤΥΠΩΝ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΤΗ ΒΙΒΛΙΟΘΗΚΗ JAVA.NET ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΥ ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΟΥ ΤΕΕ Βραχνός Ευριπίδης Καθηγητής

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

10.1 Γενικά για τα streams

10.1 Γενικά για τα streams 10.1 Γενικά για τα streams Για την αλληλεπίδραση ενός προγράµµατος µε ένα αρχείο, δηλαδή για την αποθήκευση ή την ανάγνωση δεδοµένων από αυτό χρησιµοποιείται ένα σύστηµα επικοινωνίας που καλείται streams.

Διαβάστε περισσότερα

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

7.2.2 Σχέση OSI και TCP/IP Κεφάλαιο 7 7.2.2 Σχέση OSI και TCP/IP Σελ. 226-230 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr ΕΣΠΕΡΙΝΟ ΕΠΑΛ Κομοτηνής http://diktya-epal-g.ggia.info/ Γνωστό μοντέλο OSI διασύνδεσης ανοικτών συστημάτων.

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

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

4 η ιάλεξη: Signals UDP Sockets Εργαστήριο ικτύων Υπολογιστών 4 η ιάλεξη: ικτυακός Προγραμματισμός Signals UDP Sockets TCP sockets και signals Όταν σε ένα TCP server κάνουμε fork (γεννάμε διεργασίες-παιδιά servers για να εξυπηρετήσουμε

Διαβάστε περισσότερα

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

Δίκτυα Η/Υ στην Επιχείρηση Δίκτυα Η/Υ στην Επιχείρηση Δικτυακά πρωτόκολλα και εφαρμογές, Δρομολόγηση Γκάμας Βασίλειος, Εργαστηριακός Συνεργάτης Μοντέλο πελάτη-εξυπηρετητή Προκειμένου να χρησιμοποιήσουμε μια υπηρεσία του Internet

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Κων. Κόκκινος ΠΙΝΑΚΕΣ (ARRAYS) Είναι χώροι της μνήμης για προσωρινή αποθήκευση δεδομένων του ίδιου τύπου. Οι πίνακες είναι δομές δεδομένων που τις

Διαβάστε περισσότερα

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

Διαβάστε περισσότερα

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

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Ηυιοθέτησητης τεχνολογίαςκαι αρχιτεκτονικής TCP/IP δεν έρχεται σε σύγκρουσηµε το µοντέλο του OSI και αυτό γιατί και τα δυο συστήµατααναπτύχθηκαν συγχρόνως. Παρόλα αυτά, υπάρχουν ορισµένες ουσιώδεις διαφορές

Διαβάστε περισσότερα