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

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

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

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ / ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ «ΔΙΑΔΙΚΤΥΑΚΑ ΠΡΩΤΟΚΟΛΛΑ ΚΑΙ ΔΙΕΠΑΦΕΣ ΓΙΑ ΣΥΓΚΕΡΑΣΜΕΝΕΣ ΚΑΙ ΜΙΚΡΟΤΟΝΙΚΕΣ ΚΛΙΜΑΚΕΣ ΣΕ ΦΟΡΗΤΕΣ ΣΥΣΚΕΥΕΣ» Internet Protocols and Interfaces for Tempered and Microtonic Scales in Mobile Devices Καζδαρίδης Γεώργιος Λειβαδίτης Αναστάσιος ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: Πολίτης Διονύσιος Θεσσαλονίκη, Ιούνιος 2015

2 ii

3 ΠΕΡΙΛΗΨΗ Η πτυχιακή αυτή εργασία ασχολείται με ένα πακέτο εφαρμογών σε περιβάλλοντα Windows για ηλεκτρονικούς υπολογιστές και Android για φορητές συσκευές. Πιο συγκεκριμένα, οι εφαρμογές αυτές είναι εξομοιωτές synthesizer, που τα συστήματα στα οποία είναι εγκατεστημένα μπορούν να επικοινωνούν ασύρματα μέσω WIFI δικτύων με χρήση Java Sockets. Επίσης, στις εφαρμογές συγκαταλέγονται διεπαφές που παρέχουν στον μουσικό/ερευνητή τη δυνατότητα παραγωγής μουσικής μικροτονικών και μη κλιμάκων. Αυτό γίνεται με τη βοήθεια παραδοσιακών οργάνων όπως η Ποντιακή Λύρα και το Σάζι. Επίσης, στη κατάλληλη διεπαφή ο χρήστης μπορεί να παράγει βυζαντινή μουσική με τρόπο ακριβή και όμοιο με αυτόν που παράγεται από τον ίδιο τον άνθρωπο. iii

4 ABSTRACT This thesis deals with a bunch of software applications, which are compatible with Windows for use on PCs and Android for use on mobile devices. More specifically, the applications created are synthesizer simulators, which give the ability to the systems that they are installed to communicate wirelessly via Wifi. Moreover, those applications include interfaces that give the musician/scientist the ability to produce music using microtonical and tempered scales. This is possible with the help of the traditional Greek instruments of Pontian Lyra and Sazi. Also, at a certain interface users can produce Byzantine music in a precise and similar way to the one human do it. iv

5 ΕΥΧΑΡΙΣΤΙΕΣ Ολοκληρώνοντας τις προπτυχιακές σπουδές μας παράλληλα με την παρούσα διπλωματική εργασία, θα θέλαμε πρώτα από όλους να ευχαριστήσουμε θερμά τους γονείς μας. Η αμέριστη υποστήριξη, συμπαράσταση και καθοδήγηση που μας προσέφεραν ήταν και είναι καθοριστική για την ορθή εξέλιξη της πορείας μας ακαδημαϊκά, αλλά και ως μέλη της κοινωνίας. Αμέριστη ήταν επίσης η στήριξη του επιβλέποντος της εργασίας μας, Επίκουρου Καθηγητή κ. Πολίτη Διονύσιου, τον οποίο οφείλουμε να ευχαριστήσουμε θερμά. Η συνεργασία μας υπήρξε υποδειγματική καθότι, εκτός από ένας εξαίρετος επιστήμονας, είναι και ένας θαυμάσιος χαρακτήρας ο οποίος ενδιαφέρεται για κάθε φοιτητή και την πρόοδό του. Τέλος ευχαριστούμε τους φίλους, συμφοιτητές και καθηγητές μας, για την βοήθεια και τις γνώσεις που μας προσέφεραν όλα αυτά τα χρόνια. Καζδαρίδης Γεώργιος - Λειβαδίτης Αναστάσιος 2015 v

6 ΠΕΡΙΕΧΟΜΕΝΑ Περίληψη... iii Abstract... iv ΚΕΦΑΛΑΙΟ Εισαγωγή Στόχος της διατριβής Δομή της πτυχιακής... 9 ΚΕΦΑΛΑΙΟ Sockets Η έννοια των Sockets(υποδοχές) Προγραμματισμός για TCP Sockets Oρισμός Socket Περιγραφή Λειτουργία Το μοντέλο client-server Παράδειγμα TCP Socket: Ανάπτυξη Client - Server εφαρμογής με TCP sockets O πελάτης ( client ) Ο εξυπηρετητής ( server ) Κατασκευαστές και μέθοδοι κλάσης Socket Κατασκευαστές και Μέθοδοι της κλάσης ServerSocket Σύνοψη-Συμπεράσματα ΚΕΦΑΛΑΙΟ Οι εφαρμογές Το πακέτο εφαρμογών μας Το Interface Piano Server Piano Client Οι δύο εφαρμογές σε αλληλεπίδραση Πεδίο Chat Επικοινωνία Server-Client vi

7 3.5 Η εφαρμογή για Android συσκευές Piano Client(Android) Το Interface του app Ένα χαρακτηριστικό παράδειγμα εφαρμογής του πακέτου μας ΚΕΦΑΛΑΙΟ Μικροτονική, Βυζαντινή Μουσική, Παραδοσιακά όργανα Κλίμακα Μικροτονική Βυζαντινή Μουσική Λύρα και Σάζι Η σχέση Λύρας-Σαζίου με την Βυζαντινή Μουσική Κεφάλαιο 5ο Γνωριμία με τις νέες διεπαφές του πακέτου εφαρμογών μας Διεπαφή «Παραδοσιακά Όργανα» Δύο διέσεις Τρεις διέσεις Τέσσερις διέσεις Πέντε διέσεις Διεπαφή «Βυζαντινή Μουσική» ΚΕΦΑΛΑΙΟ Σύνοψη Σύνοψη και αποτελέσματα Μελλοντική έρευνα Βιβλιογραφία vii

8 ΚΕΦΑΛΑΙΟ 1 Εισαγωγή 1.1 Στόχος της διατριβής Τα τελευταία χρόνια, η ραγδαία ανάπτυξη της τεχνολογίας συνέβαλε σημαντικά στην εξάπλωση των προϊόντων της στις σύγχρονες κοινωνίες, αφού αυτά έγιναν πιο προσιτά και πιο εύχρηστα. Η αγορά κατακλύστηκε από ηλεκτρονικούς υπολογιστές και φορητές συσκευές(κινητά και ταμπλέτες), αφού αυτά προσέφεραν την δυνατότητα παροχής λύσεων και κάλυψης αναγκών του ανθρώπου. Ανεπηρέαστος από την εξάπλωση αυτή δε θα μπορούσε να μείνει ο τομέας της μουσικής, που πλέον μέσω των εφαρμογών βρήκε λύσεις σε προβλήματα που χρόνια ταλανίζουν τους μουσικούς και τους ερευνητές της μουσικής. Ένα από αυτά ήταν η σύνδεση των μουσικών συσκευών μεταξύ τους, όπως το synthesizer, ή η σύνδεση τους με ηλεκτρονικούς υπολογιστές που πλέον θα μπορούσαν να δώσουν τεράστιες δυνατότητες λήψης και επεξεργασίας του ήχου. Τα πρότυπα σύνδεσης που χρησιμοποιούνταν παλιότερα κατά κόρον(π.χ. καλώδιο MIDI) κρίνονται πλέον ως παρωχημένα και υπήρχε η ανάγκη για εύρεση μιας πιο σύγχρονης και αποδοτικής εναλλακτικής σύνδεσης. Η εργασία αυτή είχε ως στόχο την ανάπτυξη ενός πακέτου τριών εφαρμογών εξομοιωτών synthesizer, που θα συνδέονταν και θα επικοινωνούσαν μεταξύ τους μέσω ενός ασύρματου δικτύου Wifi, με την υλοποίηση αυτή να γίνεται με την χρήση TCP Sockets που αναπτύχθηκαν σε γλώσσα Java και βασίστηκε στο γνωστό μοντέλο Client-Server. Οι τρεις συσκευές θα έπρεπε να μπορούν να λειτουργούν ταυτόχρονα, δηλαδή να παίζει ο χρήστης σε αυτές το όργανο το οποίο είχε επιλέξει. Κάθε συσκευή 8

9 θα έπρεπε να αναπαράγει τον ήχο από τα πλήκτρα της που πατάει ο χρήστης κάθε στιγμή, αλλά επίσης ταυτόχρονα και του ήχους από τα πλήκτρα που πατιούνται στις άλλες δύο συσκευές. Επιπλέον, οι άλλες δύο συσκευές θα έπρεπε να λειτουργούν και να αναπαράγουν ήχο ακόμη και από διαφορετικό όργανο από την πρώτη συσκευή. Ακόμη, η εργασία κλήθηκε να δώσει μια λύση στο πρόβλημα της ανεπάρκειας των συσκευών που υπήρχαν ώστε να αποδώσουν σωστά τους ήχους μικροτονικής, αφού όσες προσπάθειες έγιναν κρίθηκαν όχι ιδιαίτερα επιτυχημένες, κυρίως λόγω δυσχρηστίας των συσκευών από τον χρήστη και του όγκου τους, καθώς ήταν ιδιαίτερα μεγάλες. Έτσι, προσπαθήσαμε να δημιουργήσουμε ένα εύχρηστο περιβάλλον ώστε να μπορεί κάποια να έρθει σε επαφή και να παίξει σε μικροτονικές κλίμακες, με χρήση 2 παραδοσιακών οργάνων, της Ποντιακής Λύρας και του Σαζίου. Τέλος, υλοποιήσαμε μια εφαρμογή όπου ο χρήστης μπορεί να παράγει Βυζαντινή μουσική με τρόπο αποδοτικά και εύκολα. 1.2 Δομή της πτυχιακής Η πορεία του κειμένου οργανώνεται στα επόμενα πέντε κεφάλαια. Το πρώτο κεφάλαιο αποτελεί την εισαγωγή, ενώ μετά το πέρας του τελευταίου κεφαλαίου αναγράφονται οι αναφορές. Το δεύτερο κεφάλαιο περιγράφει τα Sockets, από την δημιουργία της έννοιας ως τις σημερινές μορφές τους και τις εφαρμογές που αυτά βρίσκουν. Επίσης, ερχόμαστε σε επαφή με το γνωστό μοντέλο πελάτη-εξυπηρετητή και βλέπουμε πως αυτό ενσωματώνεται στην δημιουργία των Java Sockets. Το τρίτο κεφάλαιο μας «συστήνει» την εφαρμογή την οποία δημιουργήσαμε. Βλέπουμε αναλυτικά τι περιλαμβάνει το οπτικό περιβάλλον της, το κομμάτι της λειτουργικότητάς της και και επεξηγούμε τους λόγους για τις επιλογές που κάναμε όταν την προγραμματίζαμε. Επιπρόσθετα, δίνουμε και ένα παράδειγμα εφαρμογής του πακέτου εφαρμογών μας, που καταδεικνύει το πόσο καινοτόμα και χρήσιμη μπορεί να είναι. Στο τέταρτο κεφάλαιο ορίζουμε και αναλύουμε μουσικές έννοιες όπως η Μικροτονική, η Βυζαντινή μουσική. Παράλληλα, ερχόμαστε σε επαφή με 2 παραδοσιακά όργανα, την Ποντιακή Λύρα και το Σάζι, και πάμε ένα ταξίδι στην ιστορία γνωρίζοντας την εξέλιξή τους. Το πέμπτο κεφάλαιο αναφέρεται εξολοκλήρου στο σχεδιασμό και την κατασκευή των διεπαφών παραγωγής Βυζαντινής Μουσικής και μουσικλης σε Μικροτονική με Λύρα και Σάζι. Όπως και στις προηγούμενες εφαρμογές, θα μιλήσουμε για το οπτικό περιβάλλον, την λειτουργία και τον προγραμματιστικό σχεδιασμό τους. 9

10 Το έκτο και τελευταίο κεφάλαιο αποτελεί μια σύνοψη των προηγούμενων ζητημάτων και συνεισφορών. Η εργασία αυτή κλείνει με την παράθεση μερικών ιδεών και θεμάτων, πάνω στα οποία πιθανώς να επικεντρωθεί το μελλοντικό ερευνητικό έργο πάνω στο ήδη υπάρχον πακέτο εφαρμογών. 10

11 ΚΕΦΑΛΑΙΟ 2 Sockets 2.1 Η έννοια των Sockets(υποδοχές) Τα sockets είναι μια έννοια που αρχικά πρωτοεμφανίστηκε στα λειτουργικά συστήματα UNIX. Το σύστημα εισόδου εξόδου (input/output) των socket στηρίζεται στις ακόλουθες διεργασίες: Open: Άνοιγμα αρχείου Read/Write: διάβασμα από ή εγγραφή στο αρχείο Close: κλείσιμο αρχείου Αυτές οι έννοιες επεκτάθηκαν τα τελευταία χρόνια τόσο στην επικοινωνία με χρήση φορητών συσκευών, όσο και στην επικοινωνία μεταξύ διεργασιών (inter-process communication). Τα so-ckets δηλαδή είναι μέρος του διαύλου επικοινωνίας (communi-cation channel) μεταξύ 2 διεργασιών. Τι είναι όμως τα socket? Ως υποδοχή(socket) ορίζουμε το κάθε τελικό σημείο (endpoint) ενός αμφίδρομου διαύλου επικοινωνίας ( two-way communication link) μεταξύ 2 διεργασιών που ε-εκτελούνται στο δίκτυο. Ταυτοποιείται δε από το συνδυασμό μιας IP διεύθυνσης και ενός αριθμού θύρας (port number). 2.2 Προγραμματισμός για TCP Sockets To στρώμα μεταφοράς αντιπροσωπεύεται στο Internet από τα πρωτόκολλα TCP (connection oriented) και UDP (connectionless, δηλ. με datagrams). Βάση λοιπόν κάθε δικτυακής εφαρμογής είναι το πώς χειριζόμαστε τα δύο αυτά πρωτόκολλα προγραμματιστικά μέσα στα τερματικά συστήματα. Η απάντηση εγκλείεται στη έννοια των sockets. Ένα socket (υποδοχή, πρίζα ) είναι μία οντότητα (αντικείμενο 11

12 στην περίπτωση της Java) μέσω της οποίας το δικό μας πρόγραμμα ανταλλάσσει δεδομένα με τον δίαυλο επικοινωνίας. Προγραμματιστικά δεν έχουμε παρά να διαβάζουμε από εκεί την ροή εισόδου στο σύστημά μας και αντίστροφα να γράφουμε εκεί την ροή εξόδου από το σύστημά μας. Ιδιαίτερα στην Java, υπάρχει πρόνοια οι δύο αυτές διαδικασίες να μην διαφέρουν από το γράψιμο / διάβασμα σε / από ένα αρχείο. Στην περίπτωση πολλών συνδέσεων TCP (πάντα αμφίδρομων), πρέπει σε κάθε μία να αντιστοιχείται στο δικό της socket. Για κάθε νέα επικοινωνιακή (TCP) σύνδεση δημιουργείται ένα socket. Η εξαφάνιση της σύνδεσης συνεπάγεται την εξαφάνιση του socket και το αντίστροφο. Όλα τα sockets τα οποία χειρίζεται μία συγκεκριμένη διαδικασία (η δική μας, ή μια από τις γνωστές εφαρμογές στο διαδίκτυο) έχουν βεβαίως το δικό τους όνομα για να ξεχωρίζονται προγραμματιστικά, αλλά είναι και το καθένα συνδεδεμένο στην άκρη μίας σύνδεσης προς την εφαρμογή που εξυπηρετείται. Η άκρη αυτή αναγνωρίζεται με έναν απλό αριθμό, το port no ή τον αρ. θύρας. Αρχίζοντας από το δικό μας socket (συγκεκριμένο αντικείμενο), μπορούμε νοητικά (πρακτικά γίνεται αυτόματα) να βρούμε τον αριθμό της αντίστοιχης σύνδεσης TCP (τον οποίο φέρουν όλα τα πακέτα του πρωτοκόλλου αυτού), να καταλήξομε στο άκρο του συνομιλητή μας και να βρούμε μέσα σε αυτόν το δικό του socket (συγκεκριμένο αντικείμενο), καθώς και το port no που αυτό εξυπηρετεί. Έτσι κατορθώνεται να συνεννοούνται το δικό μας με το δικό του πρόγραμμα. 2.3 Oρισμός Socket 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 ). Μπορούμε να το θεωρήσουμε ανάλογο της τηλεφωνικής υπηρεσίας, στην 12

13 οποία, μετά την εγκαθίδρυση μιας σύνδεσης μεταξύ δύο συνομιλητών, αυτή χρησιμοποιείται μέχρι το πέρας της συζητήσεως τους. Το άλλο είδος ονομάζεται 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 πακέτο 13

14 ΙnetAddress Διεύθυνση Internet Protocol (IP) URL Uniform Resource Locator URLConnection Σύνδεση με αντικείμενο του web Το μοντέλο client-server Το ευρύτερα διαδεδομένο μοντέλο ανάπτυξης δικτυακών εφαρμογών είναι το μοντέλο του πελάτη-εξυπηρετητή (client- server ). Ο εξυπηρετητής είναι μια διεργασία, η οποία εκτελείται σε έναν υπολογιστή και αναμένει να συνδεθεί σε αυτήν κάποιο πρόγραμμα - ο πελάτης, όπως ονομάζεται -, για να του παράσχει υπηρεσίες. Ένα τυπικό σενάριο που ακολουθείται συνήθως, είναι το εξής : 1. Η διεργασία - εξυπηρετητής αρχίζει να εκτελείται σε κάποιον υπολογιστή. Μετά την αρχικοποίησή της, πέφτει σε λήθαργο, αναμένοντας μία διεργασία - πελάτη να επικοινωνήσει μαζί της και να της ζητήσει κάποια υπηρεσία. 2. Μία διεργασία - πελάτης αρχίζει να εκτελείται, είτε στο ίδιο σύστημα, είτε σε κάποιο απομακρυσμένο, το οποίο συνδέεται με τον υπολογιστή στον οποίο τρέχει ο εξυπηρετητής μέσω δικτύου. Η διεργασία πελάτης στέλνει μια αίτηση, μέσω του δικτύου, στον εξυπηρετητή, ζητώντας του κάποιου είδους υπηρεσία ( π.χ. μεταφορά αρχείου, απομακρυσμένη εκτύπωση, ανάγνωση και αποστολή mail και άλλες ). 3. Ταυτόχρονα με την εξυπηρέτηση κάποιου πελάτη, ο server έχει την δυνατότητα να δέχεται και αιτήσεις άλλων πελατών προς εξυπηρέτηση. Όταν ο εξυπηρετητής τελειώσει με όλους τους πελάτες, τότε ξαναπέφτει σε λήθαργο, περιμένοντας για μια καινούργια αίτηση και η διαδικασία ξαναρχίζει από την αρχή. Ορίζουμε ως σύνδεση, τον επικοινωνιακό δίαυλο μεταξύ δύο διεργασιών. Την σύνδεση μπορούμε να την θεωρήσουμε ως μία πεντάδα, που περιγράφεται ως εξής : 14

15 { πρωτόκολλο, τοπική-διεύθυνση, τοπική-διεργασία, απομακρυσμένη - διεύθυνση, απομακρυσμένη-διεργασία } Το πρωτόκολλο αναφέρεται στο σύνολο των κανόνων που διέπουν την επικοινωνία. Η τοπική-διεύθυνση και απομακρυσμένη-διεύθυνση, προσδιορίζουν την ταυτότητα των υποδικτύων και των υπολογιστών, στους οποίους εκτελούνται οι επικοινωνούσες διεργασίες. Η τοπική-διεργασία και απομακρυσμένη-διεργασία, προσδιορίζουν την ταυτότητα των διεργασιών που θα επικοινωνούν, καθώς σε έναν υπολογιστή, μπορούν να εκτελούνται περισσότερες της μιας διεργασίες. Κάθε μία από αυτές τις διεργασίες που εκτελούνται στον ίδιο host και που χρειάζονται επικοινωνία μέσω δικτύου, λαμβάνει έναν 16-bit ακέραιο αριθμό, ο οποίος αναπαριστά την θύρα ( port number ) της διεργασίας και κατ επέκταση, της υπηρεσίας. Ορίζουμε, επίσης ως μισή σύνδεση ( half association ), είτε το σύνολο { πρωτόκολλο, τοπική-διεύθυνση, τοπική-διεργασία }, είτε το σύνολο { πρωτόκολλο, απομακρυσμένη-διεύθυνση, απομακρυσμένη-διεργασία }. Η μισή σύνδεση ονομάζεται αλλιώς και socket Παράδειγμα TCP Socket: Ανάπτυξη Client - Server εφαρμογής με TCP sockets Στο σημείο αυτό θα ήταν χρήσιμο να δούμε μια υλοποίηση ενός TCP Socket μοντέλου βασιζόμενο στο μοντέλο Client-Server, ώστε να καταλάβουμε πόσο απλή είναι και πώς μεταφέρονται οι πληροφορίες όταν δημιουργηθεί μία σύνδεση. Μία από τις κλασικές υπηρεσίες που προσφέρονται στο δίκτυο, είναι η υπηρεσία αντήχησης ( echo service ). Η λειτουργία αυτή χρησιμοποιήθηκε προσαρμοσμένη στην πτυχιακή μας, με το κώδικα προσαρμοσμένο στις ανάγκες του λογισμικού μας για την μεταφορά του ήχου. Η λειτουργία echo που έχουμε παρακάτω ως παράδειγμα, χρησιμοποιεί για την σύνδεση TCP sockets και αριθμό θύρας 7, ενώ σκοπός της είναι να μεταδώσει πίσω στον πελάτη, που θα ζητήσει τέτοια υπηρεσία, ό,τι αυτός της στείλει. Δεν επεξεργάζεται δηλ. την είσοδο, απλά της στέλνει πάλι πίσω. Μία τέτοια εφαρμογή θα αναπτύξουμε εδώ σαν παράδειγμα, τόσο το πρόγραμμα της πλευράς του πελάτη, όσο και αυτό της πλευράς του εξυπηρετητή, μόνο που θα χρησιμοποιήσουμε έναν άλλο αριθμό θύρας, τον O πελάτης ( client ) Μια τυπική αλληλουχία βημάτων που συνήθως ακολουθούνται για το πρόγραμμα του client είναι η εξής : Socket() - αρχικοποίηση και σύνδεση στον server 15

16 getinputstream() και - σύνδεση του socket με τον στάνταρ μηχανισμό getoutputstream() εισόδου/εξόδου στη Java, δηλ. τα streams read() και write() - ανάγνωση και εγγραφή στο - συνδεδεμένο με το 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()); 16

17 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 { try { if ( s!= null) s.close(); } catch(ioexception ioe) { ; } } 17

18 Ακολουθεί το ολοκληρωμένο πρόγραμμα του client μέρους της υπηρεσίας echo : // The client program for the echo service // Written using JDK, ver 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 try { line = in.readline(); out.println(line); } catch(ioexception e) { System.out.println(e.getMessage()); } // read TCP socket and write to terminal... try { line = sin.readline(); System.out.println(line); 18

19 } catch(ioexception e) { System.out.println(e.getMessage()); } } } // End of echoclient() function... public static void main(string[] args) { Socket s = null; try { // 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); } catch(ioexception e) { System.out.println(e); } 19

20 // Always be sure to close the socket... finally { try { 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. Θα πρέπει να δοθεί προσοχή στην επιλογή του αριθμού θύρας της υπηρεσίας, ο οποίος δεν θα πρέπει να είναι ήδη σε χρήση. Ο εξυπηρετητής, μόλις δεχθεί την σύνδεση καινούργιου πελάτη, γεννά μια καινούργια διεργασία - νήμα, για την εξυπηρέτηση των αιτήσεων του. Με αυτόν τον τρόπο, καθίσταται δυνατή η παράλληλη εξυπηρέτηση παλιών και η αποδοχή νέων πελατών. 20

21 Παρακάτω θα αναπτύξουμε τον αντίστοιχο εξυπηρετητή του 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 ) και απελευθερώνεται ο αντίστοιχος πόρος του συστήματος. Η κλάση ServerSocket περιέχεται στο πακέτο java.net και παρέχει μια ανεξάρτητη συστήματος υλοποίηση σύνδεσης TCP socket, απ την πλευρά του εξυπηρετητή, με βάση το client/server μοντέλο. Το αντικείμενο αυτής της κλάσης συνδέει το πρόγραμμα του εξυπηρετητή με κάποια θύρα του συστήματος, για να μπορεί αυτός στην συνέχεια να ακούει για την σύνδεση νέων πελατών. Στον κατασκευαστή του αντικειμένου προσδιορίζεται ο αριθμός θύρας και σε περίπτωση που δεν χρησιμοποιείται ήδη από άλλη υπηρεσία, δημιουργείται το αντικείμενο. Αν όμως η θύρα είναι κατειλημμένη, τότε εγείρεται εξαίρεση. Ο κώδικας είναι ως εξής : ServerSocket serversoc = new ServerSocket(8205); Αν το αντικείμενό μας κατασκευαστεί επιτυχώς, τότε ο server είναι έτοιμος για την αποδοχή καινούργιου πελάτη : 21

22 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

23 // Written using JDK import java.net.*; import java.io.*; import java.lang.*; import java.util.*; public class EchoServer { public static void main(string args[]) { // initialize the network connection try { 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 23

24 } // 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; try { // 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 24

25 out.println(st); // Write it to the screen as well System.out.println(st); // 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 { try { if (s!= null) s.close(); } catch(exception e) { System.out.println("Error : " + e.getmessage()); } } } // End of run } // End of class EchoThread Κατασκευαστές και μέθοδοι κλάσης Socket Παραθέτουμε, ενδεικτικά, μερικούς από τις μεθόδους και τους κατασκευαστές της κλάσης Socket. 25

26 Κατασκευαστές 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() 26

27 Επιστρέφει ένα stream εξόδου αυτού του socket. getport() Επιστρέφει τον αριθμό θύρας του απομακρυσμένου host στον οποίο το socket έχει συνδεθεί Κατασκευαστές και Μέθοδοι της κλάσης ServerSocket Παραθέτουμε, ενδεικτικά, μερικούς από τις μεθόδους και τους κατασκευαστές της κλάσης ServerSocket. Κατασκευαστές ServerSocket(int) Δημιουργεί ένα server socket στη θύρα της οποίας ο αριθμός καθορίζεται απ την παράμετρο. Αν ο αριθμός είναι το 0, τότε αφήνεται στο σύστημα η επιλογή μιας ελεύθερης ( μη χρησιμοποιούμενης ) θύρας. ServerSocket(int, int) Δημιουργεί ένα server socket στην θύρα της οποίας ο αριθμός καθορίζεται απ την πρώτη παράμετρο, ενώ επιτρέπει τόσες συνδέσεις να περιμένουν στην ουρά του port, μέχρι να γίνουν αποδεκτές, όσες η δεύτερη παράμετρος. Και εδώ, το 0 επιλέγει μια ελεύθερη θύρα. Μέθοδοι accept() Ακούει το server socket για πιθανή σύνδεση που θα γίνει και την αποδέχεται. close() 27

28 Κλείνει το server socket. getinetaddress() Επιστρέφει την τοπική διεύθυνση αυτού του server socket. getlocalport() Επιστρέφει το port που αυτό το server socket ακούει. 2.4 Σύνοψη-Συμπεράσματα Συμπερασματικά παρατηρούμε τα εξής στα παραπάνω χαρακτηριστικά παραδείγματα προγραμματισμού sockets σε server και client: Με την Java, ο προγραμματισμός των sockets είναι ένα πολύ απλό θέμα και απαιτεί λίγες σχετικά γραμμές κώδικα. Η αποστολή και λήψη μηνυμάτων εξομοιώνεται με τις γενικές αρχές του I/O στην γλώσσα αυτή. Το αντικείμενο SocketServer αφορά τον server, δηλ. αυτόν πού δέχεται κλήσεις και οφείλει να ανταποκριθεί σε αυτές. Αντίθετα ο client επενεργεί αποκλειστικά με αντικείμενο Socket. Υπάρχει πάντοτε θέμα πολυ-προγραμματισμού για τον server, το οποίο στην περίπτωση της Java επιλύεται με threads. Υπάρχει θέμα εισαγωγής timeouts σε όλες τις περιπτώσεις πού αναμένομε κάτι να αφιχθεί από την άλλη μεριά. Δεν μας απασχολεί το port no του client. Ο client δεν αναμένει δημιουργία νέας σύνδεσης από την πλευρά του δικτύου ώστε να χρειάζεται να γνωρίζει που να την συνδέσει. Στην μεριά του client ασχολούμαστε μόνο με το αντικείμενο socket που εμείς δημιουργήσαμε και μέσω του οποίου χρησιμοποιούμε και διαχειριζόμαστε την σύνδεση. 28

29 ΚΕΦΑΛΑΙΟ 3 Οι εφαρμογές 3.1 Το πακέτο εφαρμογών μας Οι απαιτήσεις της εργασίας αυτής επέβαλαν για την ανάπτυξη των ζητούμενων την δημιουργία ενός πακέτου εφαρμογών που θα ήταν ένας εξομοιωτής synthesizer, τόσο για το περιβάλλον τον Microsoft Windows, όσο και για αυτό του Android, για τις εκδόσεις από και πάνω. Έτσι, αρχικά αναπτύξαμε για τα Windows από την αρχή μια εφαρμογή ενός εξομοιωτή synthesizer, χρησιμοποιώντας το γνώριμο λογισμικό NetBeans και σαν εργαλείο την γλώσσα Java στην τελευταία έκδοσή της. H γλωσσα επιλέχθηκε διότι μας προσέφερε ευελιξία, ώστε στη συνέχεια να αναπτυχθεί με την ίδια η εφαρμογή για Android στο νεαρής ηλικίας λογισμικό Android Studio, που αποτελεί πλέον το επίσημα υποστηριζόμενο από την Google λογισμικό ανάπτυξης Android εφαρμογών. Ας δούμε λοιπόν τις εφαρμογές των Windows. Οι εφαρμογές ονομάστηκαν PianoServer και PianoClient(αναπτύχθηκε μια client για Windows και μια για Android). Η PianoServer είναι αυτή που δημιουργήθηκε με σκοπό να αποτελέσει την server εφαρμογή στο Socket που αναπτύχθηκε μεταξύ 3 υπολογιστικών συστημάτων, δύο σε Windows και μία σε Android. Η εφαρμογή PianoServer περιλαμβάνει τρία Jframe: τα Piano_play.java, ByzMusic.java, Music.java και μια κλάση RecieveMessage.java. Αντίστοιχα και η εφαρμογή PianoClient περιλαμβάνει 3 JFrame ClientForm.java, ByzMusic.java, Music.java και μια κλάση ReceiveMessage.java. Θα εξηγήσουμε στην πορεία την λειτουγία όλων αυτών των αρχείων java. 3.2 Το Interface Τα αρχεία JFrame Piano_play.java και ClientForm.java δημιουργούν τα γραφικά περιβάλλοντα που βλέπουμε παρακάτω, του PianoServer και PianoClient αντίστοιχα. Είναι γενικά οι βασικές κλάσεις και των 2 εφαρμογών και οι βασικότερες διεργασίες εκτελούνται σε αυτές. 29

30 Piano Server Piano Client 30

31 Το περιβάλλον που έχουμε δημιουργήσει είναι όπως βλέπουμε ίδιο και στις 2 περιπτώσεις. Κάθε πλήκτρο έχει δημιουργηθεί ώστε να μην είναι «νεκρό», αλλά έχοντας ευαισθησία ακόμα και στο απλό πέρασμα του κέρσορα από επάνω τους, ακόμα και αν δεν πατηθούν, πράγμα που είναι ορατό, αφού αλλάζουν φωτεινότητα στην περίπτωση αυτή. Τα λευκά πλήκτρα που δημιουργήθηκαν είναι κατά σειρά από αριστερά προς τα δεξιά τα C D E F G A B C1 D1 E1 και οι αντίστοιχες διέσεις οι C# D# F# G# Bb C#1 Eb. Σε κάθε πίεση του πλήκτρου από τον κέρσορα με κλικ το αντίστοιχο πλήκτρο μετακινείται προς τα κάτω, ουσιαστικά γίνεται δηλαδή μια εξομοίωση της πίεσης ενός πλήκτρου ενός αληθινού synthesizer. Για να δούμε το θέμα από την «πίσω» πλευρά του, την προγραμματιστική, σε κάθε πίεση ενός πλήκτρου έχει ανατεθεί μια συγκεκριμένη διαδικασία. Το πλήκτρο όταν το πρόγραμμα τρέχει αναμμένη από τον χρήστη να πιεστεί, δηλαδή υπάρχει ένας listener που περιμένει την πράξη της πίεσης πλήκτρου. Όταν αυτή συμβεί, εκτελείται η αναπαραγωγή ενός.wav αρχείου, που κάθε φορά είναι αρχείο της νότας του αντίστοιχου πλήκτρου(του αντίστοιχου οργάνου, που έχει επιλέξει ο χρήστης). Ο χρόνος που θα ανοιχτεί και θα κλείσει το αρχείο είναι συγκεκριμένος και έχει προκαθοριστεί από εμάς. Η συγκεκριμένη ενέργεια γίνεται όσες φορές ζητηθεί από το πρόγραμμα και δεν παρουσιάζει καμία καθυστέρηση που να είναι αντιληπτή από τον χρήστη. Στην μουσική πλευρά τώρα, το κάθε αρχείο.wav είναι μια συγκεκριμένη νότα ξεκινώντας από το C.WAV που είναι η νότα C = C4 = 259,412Hz καταλήγοντας στην νότα 31

32 Ε1. Για λόγους ευχρηστίας και ευκολότερης ανάπτυξης, κυρίως λόγω της μικρής «φιλικότητας» της Java απέναντι στη μουσική και τα θέματά της, χρησιμοποιήσαμε wav αρχεία και όχι πιο σύγχρονα format μουσικών αρχείων. Επιπλέον, οι διάφορες συναρτήσεις παραγωγής ήχου δεν ήταν ιδιαίτερα αξιόπιστες στην απόδοση ήχων με τον τρόπο που θα θέλαμε και θα ήταν σίγουρα πιο προσιτοί στο ανθρώπινο αυτί. Τέλος, να τονίσουμε ότι τα αρχεία είναι ενσωματωμένα στο πακέτο προγραμμάτων που αναπτύξαμε καθαρά για λόγους ευκολίας. Είναι πολύ εύκολο να τροποποιηθούν τα αρχεία από κάποιον που γνωρίζει προγραμματισμό και να αλλαχτούν ακόμη και εξολοκλήρου οι επιλογές οργάνων που έγιναν. Στο επάνω μέρος της εφαρμογής βλέπουμε τα πλήκτρα επιλογής του οργάνου που θέλουμε να παίζει ο εξομοιωτή μας. Τα όργανα που εμείς εισάγαμε ήταν τα εξής: Double Bass, Steel Drums, Piano, Electric και η Ποντιακή λύρα, λόγου του της καταγωγής του δημιουργού. Ο χρήστης μπορεί να επιλέξει ποιο όργανο θα ακούγεται ενώ πατάει τα πλήκτρα(παίζει μουσική). Αρχικά σαν προεπιλεγμένο από default είναι το πιάνο. Ωστόσο, μπορεί να επιλέξει οποιαδήποτε στιγμή το επιθυμεί κάποιο άλλο όργανο και η αλλαγή γίνεται άμεσα. Η παραπάνω διαδικασία γίνεται με τη μεταβλητή που ονομάσαμε M_Organo στην οποία κάθε φορά επιλέγεται που ο χρήστης θα επιλέξει ένα όργανο, στη μεταβλητή μας αποθηκεύεται ένας χαρακτήρας, που είναι το πρώτο γράμμα του κάθε οργάνου που επιλέχθηκε. Έτσι, το σύστημα γνωρίζει ανά πάσα στιγμή ποιο όργανο είναι επιλεγμένο και αναγνωρίζει άμεσα κάθε εναλλαγή, τη στιγμή που γίνεται. Με τον τρόπο αυτό αναπαράγει κάθε φορά το αντίστοιχο αρχείο που χρειάζεται. Η νότα που αναπαράγεται θα είναι η Nota=M_Organo+Nota; Το M_Organo αρχικοποιείται με την τιμή p, δηλαδή αντιστοιχεί στο πιάνο, που όπως προείπαμε είναι επιλεγμένο by default. Τέλος, να πούμε ότι η λειτουργία της εφαρμογής επιτρέπει να πατηθούν πλήκτρα ταυτόχρονα ή πολλές φορές συνεχόμενα και η εφαρμογή να εκτελεί όλες τις εντολές άμεσα χωρίς σφάλμα Piano Server Η εφαρμογή PianoServer, εκτός από τις λειτουργίες που υλοποιήθηκαν στην ανάπτυξή της, φιλοξενεί και μία επιπλέον λειτουργία, που ίσως είναι και η σημαντικότερης σημασίαw για αυτήν την πτυχιακή εργασία. Το πρόγραμμα έχει την δυνατότητα να ξεκινάει μια λειτουργία Client-Server, σύμφωνα με τις αρχές που περιγράψαμε πιο πάνω, στο κεφάλαιο των Sockets, αφού ουσιαστικά το δίκτυο που δημιουργείται είναι ένα socket. O χρήστης, πιέζοντας το πλήκτρο Start Server, έχει τη δυνατότητα να δημιουργήσει ένα server στο τοπικό δίκτυο που είναι συνδεδεμένοι οι υπολογιστές μας (εμείς το δοκιμάσαμε στο πιο προηγμένο τεχνολογικά που είχαμε, το δίκτυο Wifi) και να είναι 32

33 «ορατός» σε κάθε συσκευή client που θα μπορούσε να το «δει», εφόσον έχει το αντίστοιχο λογισμικό client σε κάποια εφαρμογή της. Ο server μας πλέον περιμένει στην αναμονή αίτημα από οποιονδήποτε client για να συνδεθεί μαζί του Piano Client Ο Piano Client από τη μεριά του, εκτός από τις προαναφερόμενες μουσικές λειτουργίες που έχει και μοιράζεται με τον Server, διαφέρει από τον τελευταίο επειδή έχει την δυνατότητα να στέλνει αιτήσεις σύνδεσης σε διαθέσιμους Server το τοπικού δικτύου μας. Αυτό γίνεται με το αντίστοιχο κουμπί Connect Server και υλοποιείται με τον αντίστοιχο κώδικα, με μικρές τροποποιήσεις, που δίνεται σαν παράδειγμα στο κεφάλαιο των sockets. Ωστόσο, για να επιτευχθεί η σύνδεση θα πρέπει να γνωρίζουμε την IP που «κατέχει» ο Server μας το τοπικό δίκτυο, έτσι ώστε να ρυθμίσουμε τον client για να τον αναζητήσει. Επιπροσθέτως, θα πρέπει να ορίσουμε τόσο στον Server όσο και στον Client μια πόρτα(port) μέσω της οποίας θα επιτευχθεί η σύνδεση μεταξύ των δύο εφαρμογών. Αυτό γίνεται από τον κώδικα και προρυθμίζεται πριν εκκινήσουμε τις εφαρμογές μας. 33

34 3.3.1 Οι δύο εφαρμογές σε αλληλεπίδραση Επομένως όταν δημιουργηθεί ένας server από το PianoServer και στην συνέχεια ο PianoClient εντοπίσει τον Server και συνδεθεί σε αυτόν, έχουμε βάλει να εμφανίζονται μηνύματα επιτυχίας ή αποτυχίας. Αν συνδεθούν στον Server εμφανίζεται client request accepted, ενώ στον client εμφανίζεται connected to server. Ενώ αν ο server ξαναδημιουργήσει έναν server εμφανίζεται το μήνυμα No client Avaivable. 34

35 3.3.2 Πεδίο Chat Επίσης υπάρχουν ακόμα το κουμπί send, ένα textarea και ένα textfield και στις 2 εφαρμογές. Τα οποία μας βοηθούν στην συζήτηση μεταξύ server και client αν χρειαστεί, αλλά και στο να γνωρίζουμε τι πλήκτρα πατάει ο client. Πως όμως χρησιμοποιούνται όλα αυτά? Μπορούμε να γράψουμε ένα μήνυμα (οποιασδήποτε μορφής) στο πεδίο του textfield και στην συνέχεια αφού έχουμε την ευκαιρία διόρθωσης του μηνύματος, πατώντας το κουμπί send αποστέλλουμε το μήνυμα μας. Το μήνυμα αυτό θα εμφανιστεί στον client στο πεδίο του textarea. Ομοίως, ο client έχει την δυνατότητα να «απαντήσει» στον server, δηλαδή να δημιουργηθεί ένας «διάλογος», δηλαδή μια αμφίδρομη επικοινωνία, πράγμα που είναι μια από τις πιο σύγχρονες μορφές διαδραστικότητας στην ψηφιακή εποχή που ζούμε. Πακέτα δεδομένων στέλνονται με την πίεση του send από τον server στον client και vice versa. Ενδεικτικά, οι ενέργειες που αναλύσαμε φαίνονται στις παρακάτω εικόνες, από προηγούμενη εξομοίωση που πραγματοποιήσαμε: 35

36 3.4 Επικοινωνία Server-Client Στην περίπτωση που ο Client είναι συνδεδεμένος με τον Server όταν πατηθεί μια νότα στον client κατευθείαν εμφανίζει στο textarea του Server ποια ή ποιες νότες έχουν πατηθεί. Επίσης όταν πατηθεί η νότα στον Client αναπαράγεται από τον Client αλλά και από τον Server. Πώς το πετυχαίνουμε αυτό όμως. Η νότα που επιλέγεται από τον Client εκτός του ότι αναπαράγει ένα.wav αρχείο, στέλνει και μια πληροφορία στον Server, στην ουσία ποια νότα πατήθηκε. Ο Server με την σειρά του λαμβάνει την πληροφορία, η οποία μεταφράζεται, ενώ παράλληλα εμφανίζεται η αντίστοιχη νότα στο πεδίο textarea και αναπαράγει το κατάλληλο.wav αρχείο. Ο server θα εκτελέσει την αναπαραγωγή του τρέχοντος αρχείου που εκτελεί και ο Client (ίδιο όργανο, ίδια νότα ) και παράλληλα θα μπορεί να παίξει μια οποιαδήποτε νότα με οποιοδήποτε όργανο από την ίδια την εφαρμογή. 36

37 Με τον τρόπο αυτό είναι δυνατόν ο χρήστης να παίξει από υπολογιστή, κινητό ή ταμπλέτα(για τα δύο τελευταία θα παρουσιάσουμε συνοπτικά την αντίστοιχη εφαρμογή που υλοποιήθηκε παρακάτω) και να ακούγεται ο ήχος τόσο από το ίδιο το μηχάνημα που παίζει, όσο και από το άλλο απομακρυσμένο μηχάνημα. Τα 2 λειτουργικά συστήματα που συμμετέχουν θα έχουν την δυνατότητα να παίζουν ταυτόχρονα και με οπτικοακουστική επικοινωνία μεταξύ των χρηστών. Επιπλέον, ο Client μπορεί να πληκτρολογήσει στο πεδίο textfield του, τις νότες που θέλει, να πατήσει το κουμπί send και στην συνέχεια οι νότες αυτές να αναπαραχθούν από τον Server. Προγραμματιστικά τώρα, αυτές οι λειτουργίες που βοηθούν στην επικοινωνία των 2 συστημάτων, υποστηρίζονται από την κλάση ReceiveMessage.javva η οποία υπάρχει και στον Server αλλά και στον Client. Στην ουσία η κλάση δέχεται 2 ορίσματα το textarea του τρέχοντος συστήματος που βρίσκεται και το μήνυμα που δέχεται το τρέχων σύστημα. Και μετά αναλόγως, εμφανίζει το μήνυμα στο πεδίο textarea και αν απαιτείται κάνει και την αναπαραγωγή της νότας που δόθηκε. Τα πλεονεκτήματα στο παράλληλο(ταυτόχρονο) παίξιμο των Server και Client είναι πολύ σημαντικά: έχουμε πετύχει την μέγιστη μείωση χρόνου καθυστέρησης αναπαραγωγής της νότας και παράλληλα δίνουμε την ευκαιρία σε Server και Client να πετυχαίνουν πλήρη παραλληλισμό χωρίς καθυστερήσεις που θα ήταν αντιληπτές. 3.5 Η εφαρμογή για Android συσκευές Πριν προχωρήσουμε παρακάτω, δεν θα πρέπει να παραλείψουμε ένα πολύ σημαντικό κομμάτι της ανάπτυξης του πακέτου εφαρμογών μας, την ανάπτυξη ενός Client για συσκευές Android, κατάλληλου για χρήση σε κινητά ή ταμπλέτες. Είναι τόσο διαδεδομένη η χρήση φορητών συσκευών στην καθημερινή ζωή μας στην εποχή που ζούμε, που κάθε οικογένεια σχεδόν έχει στην κατοχή της μία. Αυτόν μας δίνει ένα πολύ μεγάλο κίνητρο- αφού το κοινό που μπορούσε να το χρησιμοποιήσει είναι τεράστιο- στο να αναπτύξουμε ένα app το οποίο θα υλοποιεί στη ουσία τον εξομοιωτή synthesizer στη φορητή συσκευή μας για να μπορεί ο χρήστης να παίξει μουσική πατώντας με τα δάχτυλά του τα κουμπιά στην οθόνη αφής της συσκευής του. Αυτό έχει ιδιαίτερη σημασία, γιατί ο χρήστης εξομοιώνει στον απόλυτο βαθμό το «παίξιμο» ενός synthesizer, αφού καλείται να παίξει μουσική κάνοντας με τα δάχτυλά του ακριβώς τις ίδιες κινήσεις που θα έκανε έχοντας μπροστά του ένα πραγματικό synthesizer. Επιπρόσθετα, η ευαισθησία των σύγχρονων συσκευών μας επιτρέπει την πίεση πολλών σημείων της οθόνης ταυτόχρονα(ευαισθησία πολλών σημείων), δηλαδή ο χρήστης μπορεί να πατάει στην εφαρμογή μας πολλά πλήκτρα ταυτόχρονα και να 37

38 αναγνωρίζονται από το λειτουργικό της φορητής συσκευής του όλες οι ενέργειές του. Αυτό είναι ζωτικής σημασίας, μιας και στο «παίξιμο» των πραγματικών synthesizer οι μουσικοί για να παράγουν τους επιθυμητούς ήχους, πατούν πολλά πλήκτρα ταυτόχρονα. Άρα και πάλι έχουν απόλυτη εξομοίωση στο θέμα αυτό Piano Client(Android) Η ανάπτυξη του app για Android του Piano Client έγινε στην τελευταία έκδοση του Android Studio, σε γλώσσα Java. Ο κώδικας που χρησιμοποιήθηκε ήταν παρόμοιος με τις κατάλληλες τροποποιήσεις με αυτόν του Piano Client για λειτουργικά συστήματα Windows. Ωστόσο, έπρεπε να δημιουργηθεί και το κατάλληλο μανιφέστο(android Manifest), ώστε η εφαρμογή μας να λειτουργεί κανονικά και χωρίς σφάλματα στα λειτουργικά Android Το Interface του app Στο interface της εφαρμογής δεν εντοπίζονται διαφορές, πέρα από τις οπτικές(μορφοποίηση) στις λειτουργίες σε σχέση με την εφαρμογή client για Windows, εκτός από τον τρόπο λειτουργίας Socket που ενσωματώσαμε στο app μας. Στην περίπτωση των Windows, την IP του server και την πόρτα που θα χρησιμοποιούσαμε για την σύνδεση των 2 συσκευών μας τις προρυθμίζαμε μέσα από τον κώδικα της Client εφαρμογής. Στη περίπτωση του Android app μας, θα πρέπει να εισάγουμε την IP του server στο πεδίο dstaddress και τον αντίστοιχο αριθμό της πόρτας που θέλουμε να χρησιμοποιήσουμε στο πεδίο dstport. Τα δύο αυτά πεδία βρίσκονται στο πάνω μέρος του κύριου Screen της εφαρμογής μας. Όταν συμπληρώσουμε τα δύο πεδία με τους σωστούς αριθμούς, πατάμε το πλήκτρο Connect και αν υπάρξει σύνδεση παίρνουμε μήνυμα επιτυχημένης διασύνδεσης μόνο στην οθόνη του Server όπως ακριβώς γινόταν και στην σύνδεση μεταξύ συσκευών με λειτουργικό Windows, όπως περιγράφεται παραπάνω. Τέλος, να τονίσουμε ότι υπάρχει ένα επιπλέον πλήκτρο ON/OFF που αν πατηθεί ενεργοποιεί την λειτουργία αποστολής μηνυμάτων στον server ώστε να λειτουργεί κανονικά όπως και παραπάνω η λειτουργία Socket. Αν π.χ. το κουμπί είναι στην λειτουργία OFF o Client αναπαράγει κανονικά τους ήχους από τα πλήκτρα που πατιούνται στον ίδιο, όμως δεν αποστέλλονται μηνύματα στον Server με τα πλήκτρα που πατάει ο χρήστης στην φορητή συσκευή και όπως είναι φυσικό ο Server δεν αναπαράγει κανέναν ήχο. Η λειτουργία του πλήκτρου ON/OFF είναι στην επιλογή OFF by default. Παρακάτω βλέπετε το Interface του app που αναπτύξαμε: 38

39 3.6 Ένα χαρακτηριστικό παράδειγμα εφαρμογής του πακέτου μας Παρακάτω βλέπουμε τον παγκοσμίου φήμης Έλληνα συνθέτη Βαγγέλη Παπαθανασίου πριν αρκετά χρόνια, να χρησιμοποιεί στο στούντιό του πολλά συνθεσάιζερ μαζί, για να ηχογραφήσει τον υψηλής ποιότητας χαρακτηριστικό ήχο του. 39

40 Πλέον, με εφαρμογές σαν αυτές που αναπτύξαμε, μπορούμε να συνδέσουμε συσκευές μεταξύ τους που είναι πολύ λεπτότερες σε σχέση με τα synthesizer που βλέπουμε παραπάνω, πολύ φθηνότερες, με μικρή κατανάλωση ενέργειας και με τέτοια ευαισθησία στις οθόνες αφής τους, ώστε μπορούν να αναγνωρίζουν ακόμα και την επαφή του ανθρώπινου χεριού με την οθόνη σε 8 έως 10 διαφορετικά σημεία. Το τελευταίο είναι πολύ σημαντικό, διότι μπορούν να προσομοιώσουν πολύ ρεαλιστικά ένα synthesizer, αφού ο χρήστης μπορεί να πιέζει τα πλήκτρα του εικονικού πληκτρολογίου με όλα τα δάχτυλα των χεριών, όπως ένας μουσικός που παίζει μουσική σε ένα πραγματικό synthesizer. Μερικές χαρακτηριστικού τύπου συσκευές είναι οι παρακάτω: 40

41 Έτσι, ο μεγάλος Έλληνας συνθέτης θα μπορούσε να έχει μπροστά του μια διάταξη σαν την παρακάτω, έχοντας παράλληλα όλα τα πλεονεκτήματα που προαναφέραμε παραπάνω: Σε αυτήν παρατηρούμε ότι χρειαζόμαστε 3 Android συσκευές και 2 ηλεκτρονικούς υπολογιστές με λειτουργικό Windows και οθόνη αφής. Έτσι, παρέχουμε 4 synthesizer στο μουσικό/ερευνητή. Επίσης, μπορούμε να προσθέσουμε μια κονσόλα παραμετροποίησης του ήχου που εξάγουν οι υπόλοιπες συσκευές(εύκολα βρίσκει κάποιος μία εφαρμογή λογισμικού ανοιχτού κώδικα που να την υλοποιεί). Κάθε συσκευή ενώνεται ασύρματα, πράγμα σημαντικό, αφού πλέον γλιτώνουμε από την πληθώρα καλωδίων που είναι απαραίτητα και εγκαταλείπουμε τεχνολογίες που θεωρούνται παρωχημένες, όπως π.χ. το πρωτόκολλο MIDI. Ακόμη, μπορούμε να ρυθμίσουμε πολλαπλά κάθε εξομοιωτή μας, ως προς το όργανο που θα παίζει. Τέλος, να σημειωθεί ότι μια διάταξη σαν αυτή που παρουσιάζουμε θα περιόριζε σημαντικά το κόστος κτήσης των απαραίτητων συσκευών για την παραγωγή ήχου σε επίπεδα χαμηλότερα ενός μόνο καλού synthesizer, δηλαδή είναι πλέον αυξημένη η προσιτότητα για τον καθημερινό χρήστη. 41

42 ΚΕΦΑΛΑΙΟ 4 Μικροτονική, Βυζαντινή Μουσική, Παραδοσιακά όργανα 4.1 Κλίμακα Είδαμε λοιπόν ως τώρα ένα μουσικό πιάνο που σου επιτρέπει να μπορείς να παίζεις μουσική χωρίς να έχεις κάποιο μουσικό όργανο και επίσης να υπάρξει μια επικοινωνία με κάποιο άλλο μουσικό όργανο ή και κάποια ηχογράφηση μέσω ενός pc χωρίς να πρέπει να συνδέσεις το μουσικό σου όργανο με καλώδια σε στο pc ή κάπου αλλού. Το πιάνο αυτό όμως βασίζεται στα Ευρωπαϊκά πρότυπα μουσικής και χρησιμοποιεί τις ευρωπαϊκές κλίμακες. ΟΡΙΣΜΟΣ: Λέγοντας Κλίμακα [<αρχ. κλῖμαξ < κλίνω] ή Σκάλα, εννοούμε μία σειρά από μουσικούς ήχους-νότες που ο αριθμός τους ποικίλει από κλίμακα σε κλίμακα, και την οποία χρησιμοποιούν οι μουσικοί κάθε λαού ως βάση για την δημιουργία της μουσικής και των τραγουδιών τους. Οι νότες κάθε μουσικής κλίμακας, έχουν ένα συγκεκριμένο τρόπο διάταξης μέσα σ' αυτήν και όταν λέμε διάταξη αναφερόμαστε κυρίως στις ηχητικές αποστάσεις που απέχουν οι νότες αυτές μεταξύ τους. Υπήρξαν και υπάρχουν πολυάριθμες και διαφορετικές μεταξύ τους ως προς την διάταξη κλίμακες, που κάθε δημιουργός-λαός τις ονομάζει με έναν δικό του τρόπο: Οι αρχαίοι Έλληνες για παράδειγμα, ονόμαζαν γενικά τις κλίμακες ως τρόπους και σε κάθε τρόπο έδιναν ανάλογα με την διάταξή του και ένα διαφορετικό όνομα, 42

43 παρμένο από τόπους και λαούς που τους πρωτο-χρησιμοποίησαν. Υπήρξε έτσι, ο "Δώριος ή Δωρικός" τρόπος, ο "Λύδιος", ο "Φρύγιος" κ.ά. Οι Έλληνες του Πόντου ονομάζουν τις κλίμακες σκοπούς. Οι Άραβες ονομάζουν τις κλίμακες τους ως μακάμ και έτσι ακριβώς τις έλεγαν οι παλιοί Έλληνες μουσικοί, μέχρι τα πρώτα χρόνια που διαμορφώθηκε η έννοια του ρεμπέτικου τραγουδιού οπότε και οι κλίμακες άρχισαν να ονομάζονται με το ελληνικό, δρόμοι. Οι Βυζαντινοί ονόμαζαν τις δικές τους μουσικές κλίμακες ως ήχους και τις χώριζαν σε "κύριους ήχους" και "πλάγιους ήχους". Η ηχητική απόσταση ανάμεσα στον πρώτο και τον τελευταίο ήχο/νότα μιας οκτάφθογγης κλίμακας, ονομάζεται οκτάβα. Στην ευρωπαϊκή μουσική, το μικρότερο δομικό υλικό χτισίματος της μουσικής, η μικρότερη ηχητική απόσταση που μπορεί να έχουν δύο νότες μεταξύ τους, είναι το Ημιτόνιο. Για να γίνει αντιληπτή και οπτικά η απόσταση αυτή, αρκεί να κοιτάξουμε το πιάνο της εικόνας: Κάθε απόσταση ανάμεσα σε δύο λευκά που τα χωρίζει μαύρο πλήκτρο είναι ένας τόνος. Κάθε απόσταση ανάμεσα σε δύο λευκά πλήκτρα που δεν τα χωρίζει μαύρο πλήκτρο, είναι ένα ημιτόνιο. π.χ. ημιτόνιο είναι η απόσταση ανάμεσα στο Φα# και το Σολ, αλλά και η απόσταση ανάμεσα στα Μι και Φα. Είναι φανερό ότι μία οκτάβα (η απόστασή της επισημαίνεται και στην εικόνα) περιέχει 12 ημιτόνια, χρειάζονται δηλ. 12 ηχητικά βήματα για να καλύψουμε την απόσταση αυτή. 43

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

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

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

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

{ πρωτόκολλο, τοπική-διεύθυνση, τοπική-διεργασία, απομακρυσμένη-διεύθυνση, απομακρυσμένη-διεργασία } 11.2 Sockets 11.2.1 Το μοντέλο Client - Server και μερικοί ορισμοί Το ευρύτερα διαδεδομένο μοντέλο ανάπτυξης δικτυακών εφαρμογών είναι το μοντέλο του πελάτη - εξυπηρετητή ( client - server ). Ο εξυπηρετητής

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας Β5.1.2 Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας Τι θα μάθουμε σήμερα: Να ορίζουμε τι είναι πρωτόκολλο επικοινωνίας Να εξηγούμε τη χρησιμότητα των πρωτοκόλλων επικοινωνίας Να ονομάζουμε τα σημαντικότερα

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

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

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

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

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

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

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

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

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

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

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network).

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). ΙΔΡΥΜΑ ΝΕΟΛΑΙΑΣ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΥΠΗΡΕΣΙΕΣ ΔΙΑΔΙΚΤΥΟΥ Καλαμάτα, 2015 Το Διαδίκτυο Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network). Πρόκειται

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

Αναπαραγωγή και stop/pause έτοιμων ηχητικών clips

Αναπαραγωγή και stop/pause έτοιμων ηχητικών clips Αναπαραγωγή και stop/pause έτοιμων ηχητικών clips Το scratch διαθέτει αρκετά μεγάλη ποικιλία έτοιμων ενσωματωμένων ηχητικών clips τα οποία θα βρείτε πολύ ενδιαφέροντα και θα σας βάλουν σε πειρασμό να πειραματιστείτε

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

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

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

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

Με λίγα λόγια, το TCP/IP καθορίζει τον τρόπο που πακετάρονται και μεταφέρονται τα δεδομένα της σύνδεσής μας.

Με λίγα λόγια, το TCP/IP καθορίζει τον τρόπο που πακετάρονται και μεταφέρονται τα δεδομένα της σύνδεσής μας. Γρήγορο Ίντερνετ με Κατάλληλες Ρυθμίσεις TCP/IP Η ταχύτητά μας στο ίντερνετ εξαρτάται από πολλούς παράγοντες, όπου τον κεντρικό ρόλο παίζει η σύνδεσή μας. Πολλές φορές, όμως, η σύνδεσή μας μπορεί να περιορίζεται

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

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

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

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

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

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

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

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

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

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

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

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

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

Τετράδια Κιθάρας. Χρήση του PowerTab

Τετράδια Κιθάρας. Χρήση του PowerTab Τετράδια Κιθάρας Extra ενότητα Χρήση του PowerTab Ευγένιος Αστέρις 1 Περιεχόμενα Πρόλογος... 3 Εγκατάσταση του Power Tab... 4 Εισαγωγή ενός αρχείου midi στο Power Tab... 5 Μελέτη με το Power Tab... 9 Εξήγηση

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

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

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

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

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

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

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

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

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP Το FTP (File Transfer Protocol) είναι το εξειδικευμένο πρωτόκολλο μεταφοράς αρχείων στα σύγχρονα δίκτυα δεδομένων όπως το Διαδίκτυο. Δίνει τη δυνατότητα μεταφοράς αρχείων από τον υπολογιστή

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

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) Ένα πρόγραμμα (λογισμικό) που έχει εγκατασταθεί σε ένα υπολογιστικό σύστημα (έναν ή περισσότερους υπολογιστές)

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

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

ΚΟΙΝΩΝΙΚΗ ΔΙΚΤΥΩΣΗ ΜΕΣΩ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ: ΧΡΗΣΗ ΔΕΚΤΗ GPS ΓΙΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ ΣΕ ΚΙΝΗΤΗ ΣΥΣΚΕΥΗ ΚΟΙΝΩΝΙΚΗ ΔΙΚΤΥΩΣΗ ΜΕΣΩ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ: ΧΡΗΣΗ ΔΕΚΤΗ GPS ΓΙΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ ΣΕ ΚΙΝΗΤΗ ΣΥΣΚΕΥΗ Χαρίτων Ευσταθιάδης Σοφία Γεωργιάδου Πανεπιστήμιο Κύπρου Τμήμα Πληροφορικής ΕΠΛ 425

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

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο Αρχές Δικτύων Επικοινωνιών Επικοινωνίες Δεδομένων Μάθημα 4 ο Τα επικοινωνιακά δίκτυα και οι ανάγκες που εξυπηρετούν Για την επικοινωνία δύο συσκευών απαιτείται να υπάρχει μεταξύ τους σύνδεση από σημείο

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

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

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

άσκηση Hide UI Elements 7.2 Try and Catch 7.1 Hide UI Elements Στο Android Studio όταν θέλουμε να κρύψουμε οτιδήποτε (κάποιο Button, ένα TextView, ένα ImageView κλπ) μπορούμε να χρησιμοποιήσουμε την παρακάτω εντολή: setvisibility(view.invisible)

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

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης Σελίδα 1από ΤΕΙ ΚΑΒΑΛΑΣ Πτυχιακή εργασία Δικτυακή Εφαρμογή διαχείρισης ηλεκτρονικών εγγράφων υπηρεσίας. ΕΙΣΑΓΩΓΗ Μιλτιάδης Κακλαμάνης Σελίδα 2από Κατάλογος περιεχομένων ΕΙΣΑΓΩΓΗ...1 Σχετιζόμενα πρόσωπα...3

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

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

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

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

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

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

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

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

Κέντρο υποστήριξης HP. Εισαγωγή. Τι χρειάζεται να γνωρίζετε. Λήψη και εγκατάσταση της λύσης Vista στα Windows 8. 1 of 5 1/7/2014 2:09 μμ

Κέντρο υποστήριξης HP. Εισαγωγή. Τι χρειάζεται να γνωρίζετε. Λήψη και εγκατάσταση της λύσης Vista στα Windows 8. 1 of 5 1/7/2014 2:09 μμ http://h2056wwwhp.com/portal/site/hpsc/template.page/public/psi... 1 of 5 1/7/2014 2:09 μμ Για το σπίτι Για την επιχείρηση Υποστήριξη Είσοδος Εγγραφή Βοήθεια ιστότοπου HP Color LaserJet 3600 Printer series

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

WiFi V-Timer ΕΚΔΟΣΗ 2Η

WiFi V-Timer ΕΚΔΟΣΗ 2Η ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ WiFi V-Timer ΕΚΔΟΣΗ 2Η 1 ΠΕΡΙΕΧΟΜΕΝΑ 1. ΓΝΩΡΙΜΙΑ ΜΕ ΤΟ WiFi V-Timer... 3 2. ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΟΥ WiFi V-Timer... 4 3. ΤΟΠΙΚΟΣ ΧΕΙΡΙΣΜΟΣ ΤΟΥ WiFi V-Timer... 5 4. ΕΓΚΑΤΑΣΤΑΣΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ

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

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

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

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

Οδηγίες αξιοποίησης για τον Εκπαιδευτικό

Οδηγίες αξιοποίησης για τον Εκπαιδευτικό Ανάδοχοι Φορέας Υλοποίησης Έργο ΛΑΕΡΤΗΣ Λογισμικό Δικτύων Οδηγίες αξιοποίησης για τον Εκπαιδευτικό Ερευνητικό Ακαδημαϊκό Ινστιτούτο Τεχνολογίας Υπολογιστών Ανάδοχος φορέας: CONCEPTUM A.E. 1 Προσομοίωση

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

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

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

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

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 διασύνδεσης ανοικτών συστημάτων.

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

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

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

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

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

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

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

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

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

Οδηγός γρήγορης εγκατάστασης. (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14

Οδηγός γρήγορης εγκατάστασης. (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14 Οδηγός γρήγορης εγκατάστασης (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14 Περιεχόμενα συσκευασίας 1 Εισαγωγή στο υλικό Εξωτερική περιγραφή ΔΙΑΦΟΡΕΣ Μοντέλο

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

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρωτόκολλα και Αρχιτεκτονική Δικτύου Για να ανταλλάξουν δεδομένα δύο σταθμοί, εκτός από την ύπαρξη διαδρομής μεταξύ

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

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

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

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

Κατανεμημένα Συστήματα. 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

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

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

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

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

Interfox.gr. Κωδικοποίηση Κάμερας

Interfox.gr. Κωδικοποίηση Κάμερας Κωδικοποίηση Κάμερας 1. Κατεβάζουμε την εφαρμογή yoosee από το App store (IOS) ή από την σελίδα www.yoosee.co (Android) 2. Κάνουμε register με χρήση του e-mail μας και με εναν κωδικό. Θα εμφανιστεί μήνυμα

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

Δημιουργία μιας εφαρμογής Java με το NetBeans

Δημιουργία μιας εφαρμογής Java με το NetBeans Δημιουργία μιας εφαρμογής Java με το NetBeans Για να δημιουργήσετε μια εφαρμογή Java πρέπει να ακολουθήσετε τα εξής βήματα : Αρχικά πρέπει να δημιουργηθεί ένα project το οποίο θα περιέχει όλα τα αρχεία

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

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Περιεχόμενα Εισαγωγή στην εφαρμογή... 2 Βασική Σελίδα (Activity)... 3 Ρυθμίσεις... 3 Πελάτες... 6 Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Αποθήκη... 11 Αναζήτηση προϊόντος...

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

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

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

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

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

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

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

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης Δίκτυα Υπολογιστών Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή Κ. Βασιλάκης Περίγραμμα Τι είναι το διαδίκτυο Στοιχεία που το συνθέτουν Τρόποι παροχής υπηρεσιών Τι είναι τα πρωτόκολλα Τα άκρα του δικτύου

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

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

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

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

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Κεφάλαιο 4 SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 1 4.1 ΕΙΣΑΓΩΓΗ...3 4.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ...3 4.2.1 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...3 4.2.1.1 ΣΤΑΘΜΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...4 4.2.1.2 ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ

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

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

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

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΓΙΑ ΤΟΝ ΕΛΕΓΧΟ ΤΩΝ HX-GO02 & HX-GO1

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΓΙΑ ΤΟΝ ΕΛΕΓΧΟ ΤΩΝ HX-GO02 & HX-GO1 ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΓΙΑ ΤΟΝ ΕΛΕΓΧΟ ΤΩΝ HX-GO02 & HX-GO1 ΜΕΣΩ ΕΦΑΡΜΟΓΗΣ ΓΙΑ SMART PHONES 1 Αναζητήστε στο Google Play ή στο App Store την εφαρμογή ΗΧ-GO2 και εγκαταστήστε την στο κινητό σας (με λειτουργικό Android

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

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

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

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

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

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

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

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

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

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

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εκφώνηση: Δημιουργείστε εφαρμογή σε Java Swing με χρήση του IDE NetBeans όπου θα παρουσιάζεται ποιο κουμπί πατήθηκε. Η εφαρμογή θα μοιάζει ως εξής: Πρώτο Βήμα: Αρχική

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

Εφαρμογές Σειριακής Επικοινωνίας

Εφαρμογές Σειριακής Επικοινωνίας Εφαρμογές Σειριακής Επικοινωνίας Εισαγωγή Στο μάθημα αυτό θα μάθουμε πώς να χρησιμοποιούμε την βιβλιοθήκη serial για την επικοινωνία από την πλατφόρμα Arduino πίσω στον υπολογιστή μέσω της θύρας usb. Τι

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

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

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

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

ANDROID Προγραμματισμός Εφαρμογών

ANDROID Προγραμματισμός Εφαρμογών ANDROID Προγραμματισμός Εφαρμογών Παναγιώτης Κρητιώτης ΑΜ 1607 Περιεχόμενα Εισαγωγή Βασικά Στοιχεία Χαρακτηριστικά Αρχιτεκτονική Εργαλεία Προγραμματισμού Eclipse IDE Android SDK - ADT Plugin Προσομοιωτής

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

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο Πρωτόκολλα Διαδικτύου Μέρος 2ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Internet Protocol (IP) Στο επίπεδο δικτύου της τεχνολογίας TCP/IP, συναντάμε το πρωτόκολλο IP. Η λειτουργία του IP βασίζεται αποκλειστικά

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

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

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

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

Ethernet Ethernet ΙΕΕΕ CSMA/CD

Ethernet Ethernet ΙΕΕΕ CSMA/CD Ethernet Τα τοπικά δίκτυα είναι συνήθως τύπου Ethernet ή λέμε ότι ακολουθούν το πρότυπο ΙΕΕΕ 802.3 Ακολουθούν το μηχανισμό CSMA/CD (Πολλαπλή πρόσβαση με Ακρόαση Φέροντος και Ανίχνευση Συγκρούσεων). Πολλαπλή

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

//στο 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

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

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

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

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

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

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

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

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

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

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

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

Δίκτυα Επικοινωνιών ΙΙ: 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, μη αξιόπιστο,

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

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Σ ε λ ί δ α 1 Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Περιεχόμενα 1. Download Arebas Easy... 2 2. Εγκατάσταση Arebas Easy... 3 3. Εγγραφή στον Arebas Server... 7 4. Παραμετροποίηση Arebas Easy...

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND. 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND. 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων ΙΣΤΟΤΟΠΟΣ ΕΡΓΑΣΤΗΡΙΟΥ http://www.mech.upatras.gr/~adamides/dpe ΠΡΟΣΟΜΟΙΩΣΗ Η τεχνική

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

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

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

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

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014. Σωτήρης Γυφτόπουλος

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014. Σωτήρης Γυφτόπουλος Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων 2013-2014 Σωτήρης Γυφτόπουλος Κανόνες του Facility Game (1/4) Στο Facility Game υπάρχει ένα σύνολο κόμβων που συνδέονται «σειριακά» και κάθε κόμβος

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

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

Βασικές Υπηρεσίες Διαδικτύου. Επικοινωνίες Δεδομένων Μάθημα 2 ο Βασικές Υπηρεσίες Διαδικτύου Επικοινωνίες Δεδομένων Μάθημα 2 ο Μεταφορά αρχείων (File Transfer Protocol, FTP) user at host FTP user interface FTP client local file system file transfer FTP server remote

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

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0 Δομές Δεδομένων 5ο εξάμηνο Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse v1.0 Τις σημειώσεις κράτησαν και διαμόρφωσαν σε word οι: Κονδύλη Γαλήνη, ΑΜ 5576 Μάλλιου Χριστίνα, ΑΜ 5413

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

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

Διαχείριση Πληροφοριών στο Διαδίκτυο. Εργαστήριο 1 Διαχείριση Πληροφοριών στο Διαδίκτυο Εργαστήριο 1 Τεχνολογικό Εκπαιδευτικό Ίδρυμα Καβάλας Σχολή Διοίκησης & Οικονομίας Τμήμα Διαχείρισης Πληροφοριών Διδάσκων Μαρδύρης Βασίλειος, Διπλ. Ηλ. Μηχανικός & Μηχ.

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ CD-PLUS/4+N

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ CD-PLUS/4+N ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ CD-PLUS/4+N ΜΕΘΟΔΟΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ : Με ΙΤ-4Ν Με τηλέφωνο συνδεδεμένο στις εξόδους τηλεφωνικής γραμμής του ΙΤ-4Ν. Μπείτε στο μενού προγραμματισμού. Αν έχετε μπουτονιέρα στο σύστημα, τοποθετείστε

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

1ο Φύλλο Εργασίας. της παλέτας Ήχος. Πώς μπορούμε να εισάγουμε και να αναπαράγουμε έναν ήχο;

1ο Φύλλο Εργασίας. της παλέτας Ήχος. Πώς μπορούμε να εισάγουμε και να αναπαράγουμε έναν ήχο; 1ο Φύλλο Εργασίας της παλέτας Ήχος Πώς μπορούμε να εισάγουμε και να αναπαράγουμε έναν ήχο; Για να εισάγουμε ένα ή περισσότερα μουσικά κλιπ σε ένα αντικείμενο, επιλέγουμε από το μεσαίο παράθυρο του Scratch

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

7.11 Πρωτόκολλα Εφαρµογής. 7.11.2 Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

7.11 Πρωτόκολλα Εφαρµογής. 7.11.2 Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.11 Πρωτόκολλα Εφαρµογής 104. Αναφέρετε ονοµαστικά τις πιο χαρακτηριστικές εφαρµογές που υποστηρίζει η τεχνολογία TCP/IP οι οποίες είναι διαθέσιµες στο ιαδίκτυο 1. Ηλεκτρονικό

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

Βιντεοπροβολέας δικτύου - Οδηγός χρήσης

Βιντεοπροβολέας δικτύου - Οδηγός χρήσης Βιντεοπροβολέας δικτύου - Οδηγός χρήσης Πίνακας περιεχομένων Προετοιμασία...3 Σύνδεση του βιντεοπροβολέα με τον υπολογιστή σας...3 Ενσύρματη σύνδεση... 3 Εξ αποστάσεως έλεγχος του βιντεοπροβολέα μέσω προγράμματος

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

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

Ενότητα 1η. Εισαγωγή στην Πληροφορική Ενότητα 1η Εισαγωγή στην Πληροφορική 1.1 Τι είναι Πληροφορική Ένας σύντομος ορισμός για το τι είναι πληροφορική είναι ο παρακάτω: όλα εκείνα που χρειάζεται κανείς για να παράγει, να οργανώνει και να διαχειρίζεται

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

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

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

Προετοιμασία σύνδεσης του modem. Εγκατάσταση του Modem

Προετοιμασία σύνδεσης του modem. Εγκατάσταση του Modem ΕΓΚΑΤΑΣΤΑΣΗ ΣΥΝΔΕΣΗΣ DIAL-UP ΣΕ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ WINDOWS XP Διαδικασία δικτύωσης PC μέσω modem Στις επόμενες παραγράφους περιγράφεται αναλυτικά η διαδικασία που χρειάζεται να ακολουθήσετε προκειμένου

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

Αυτόνομοι Πράκτορες. ΝΑΟ Μουσικός

Αυτόνομοι Πράκτορες. ΝΑΟ Μουσικός Αυτόνομοι Πράκτορες ΝΑΟ Μουσικός Καρατζαφέρης Ευστάθιος Αλέξανδρος 2007 030 046 Πολυτεχνείο Κρήτης Σύντομη Περιγραφή Στόχος της εργασίας μας είναι η υλοποίηση της συμπεριφοράς αλλα και της λειτουργικότητας

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