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



Σχετικά έγγραφα
Πρωτόκολλα Διαδικτύου

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

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

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

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

Improving the performance of TCP in the case of packet reordering. Στρατάκη Μαρία

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

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

Δίκτυα Θεωρία

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

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

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

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

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

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

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

α. Συνόδου β. Μεταφοράς γ. Δικτύου δ. Διασύνδεσης δεδομένων ε. Φυσικού Επιπέδου (Μονάδες 5)

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

ΚΕΦΑΛΑΙΟ 11: Διαδικασία Μετάδοσης Δεδομένων Εισαγωγή

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

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

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

Εγχειρίδιο Ζωντανών Μεταδόσεων Υπηρεσιών Βίντεο. Πανεπιστημίου Κρήτης. Εγχειρίδιο τεχνικού μετάδοσης

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

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Σχήμα 1: TCP αποστολέας με παράθυρο αποστολέα = 1

7.1.1 Επίπεδο δικτύου Γενικές Αρχές

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο Φροντιστήριο Ασκήσεις στο TCP

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

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

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

6.2 Υπηρεσίες Διαδικτύου

Network Address Translation (NAT)

4 η Εργαστηριακή Άσκηση

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

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2

HTTP API v1.6 SMSBOX.GR HTTP API v

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

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

Δίκτυα Απευθείας Ζεύξης. Επικοινωνία µεταξύ δύο υπολογιστών οι οποίοι είναι απευθείας συνδεδεµένοι.

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΉΜΙΟ ΚYΠΡΟΥ

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου

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

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

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

Κατασκευή δικτυακής εφαρμογής στην αρχιτεκτονική ios iphone που υλοποιεί ένα παιχνίδι ερωτοαπαντήσεων

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ DVR KTEC

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή σε Έννοιες των Δικτύων Υπολογιστών Κεφάλαιο 2 Αξιοπιστία Κεφάλαιο 3 Αλγόριθμοι Πολλαπλής Πρόσβασης...

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα. λ από τον ρυθμό μετάδοσής της. Υποθέτοντας ότι ο κόμβος A

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

Εγχειρίδιο Ζωντανών Μεταδόσεων Εξελιγμένων Υπηρεσιών Βίντεο Πανελληνίου Σχολικού Δικτύου Εγχειρίδιο τεχνικού μετάδοσης

Γκέγκα Ευρώπη Κωστοπούλου Ειρήνη

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

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

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

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

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

Οδηγός Γρήγορης Εκκίνησης Εφαρμογής CamHi (Συμβατό με το μοντέλο AQ-7107VBW)

Εγχειρίδιο Ζωντανών Μεταδόσεων Εξελιγμένων Υπηρεσιών Βίντεο Πανελληνίου Σχολικού Δικτύου Εγχειρίδιο τεχνικού μετάδοσης

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

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

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

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

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

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

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

Vodafone Business Connect

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

ΤΕΙ Κρήτης, Παράρτηµα Χανίων

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

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

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

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

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

Οδηγίες για την Διαδικασία αποθήκευσης στοιχείων ελέγχου πινάκων για επίλυση θέματος Οριοθέτησης.

Εγχειρίδιο Χρήσης Εφαρμογής TRS Client

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ GRS-1

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

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

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

Πρόσκληση 10: Προηγμένες Τηλεματικές Υπηρεσίες Τ.Ε.Ι. Ηπείρου Δίκτυο Τ.Ε.Ι. Ηπείρου ΙΙ

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα

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

Δίκτυα ΙΙ. Κεφάλαιο 7

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

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

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000 INTERNET PHONE

Epsilon Net PYLON Platform


Κεφάλαιο > Ε Π Α Ν Α Λ Η Ψ Η Επικοινωνιακό Υποδίκτυο / TCP / UDP. Σελ

Μάθημα 4ο. Προγράμματα

Περιεχόμενα. Αντί προλόγου Πώς να χρησιμοποιήσετε το βιβλίο Κεφάλαιο 1: Πώς δημιουργώ το Προφίλ μου στο Facebook;...

Transcript:

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ (ΤΕΙ) ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη, Σχεδίαση και εφαρμογή πλατφόρμας παρακολούθησης κλειστού χώρου από κινητά τηλέφωνα ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ του Ρούζιου Γρηγορίου (ΑΕΜ: 746) Επιβλέπων: Γεωργιάδης Παντελής Καστοριά Νοέμβριος 2012

2

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ (ΤΕΙ) ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη, Σχεδίαση και εφαρμογή πλατφόρμας παρακολούθησης κλειστού χώρου από κινητά τηλέφωνα ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ του Ρούζιου Γρηγορίου (ΑΕΜ: 746) Επιβλέπων: Γεωργιάδης Παντελής Εγκρίθηκε από την τριμελή εξεταστική επιτροπή την........... Καστοριά Νοέμβριος 2012 3

Copyright 2012 Ρούζιος Γρηγόριος Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή της παρούσας εργασίας, εξ ολοκλήρου ή τμήματος αυτής, για εμπορικό σκοπό. Επιτρέπεται η ανατύπωση, αποθήκευση και διανομή για σκοπό μη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν μήνυμα Οι απόψεις και τα συμπεράσματα που περιέχονται σε αυτό το έγγραφο εκφράζουν αποκλειστικά τον συγγραφέα και δεν αντιπροσωπεύουν τις επίσημες θέσεις του ΤΕΙ Δυτικής Μακεδονίας. 4

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

ΠΕΡΙΕΧΟΜΕΝΑ ΕΥΧΑΡΙΣΤΙΕΣ... 5 ΠΕΡΙΕΧΟΜΕΝΑ... 6 ΛΙΣΤΑ ΕΙΚΟΝΩΝ... 8 ΠΕΡΙΛΗΨΗ... 9 ABSTRACT... 10 1. ΕΙΣΑΓΩΓΗ... 11 1.1 Τι είναι Smartphone... 12 1.2 Ιστορική Αναδρομή... 13 2. WINDOWS PHONES... 14 2.1 Σχετικά με τα Windows Phones... 14 2.2 Live Tiles... 14 3. SOFTWARE ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΕ... 17 3.1 Φιλοσοφία... 17 3.2 Microsoft DirectShow... 18 3.3 Windows Phone Application Example... 19 3.4 Push Notification... 24 4. ΠΡΩΤΟΚΟΛΛΑ ΔΙΚΤΥΩΝ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΑΝ... 26 4.1 Επίπεδο Μεταφοράς... 26 4.2 Ιδιότητες τουtcp... 27 4.3 Πως μοιάζει ένα τμήμα (segment)... 28 4.4 Παροχή Αξιοπιστίας (Providing Reliability) τουtcp... 29 5. ΕΦΑΡΜΟΓΕΣ ΠΟΥ ΑΝΑΠΤΥΧΘΗΚΑΝ... 33 5.1 See Beyond the Cameras Server... 33 5.1.1 Δημιουργία Χρήστη... 33 5.1.2 Λειτουργία Server... 34 5.1.3 Καταγραφή Συμβάντων... 34 5.1.4 Αναγνώριση κίνησης - Motion Detection... 35 5.1.5 Push Notification... 36 5.1.6 Κώδικας υλοποίησης Server... 39 6

5.2 See Beyond the Cameras (Windows Phone) Client... 43 5.2.1 Quick Connect... 44 5.2.2 New... 44 5.2.3 Save My Location... 45 5.2.4 Push Notification... 47 5.2.5 Pin to Start... 49 5.2.6 Edit... 50 5.2.7 Delete... 50 5.2.8 Κώδικας υλοποίησης της MainPage.xaml... 51 5.2.9 Κώδικας υλοποίησης Client... 53 6. ΣΚΕΨΕΙΣ ΓΙΑ ΤΟ ΜΕΛΛΟΝ... 59 7. ΣΥΜΠΕΡΑΣΜΑΤΑ... 61 ΒΙΒΛΙΟΓΡΑΦΙΑ... 62 7

ΛΙΣΤΑ ΕΙΚΟΝΩΝ Εικόνα 1.1: Smartphones... 12 Εικόνα 2.1: Live tiles... 14 Εικόνα 2.2: Μπροστά και πίσω όψη ενός Live Tile... 15 Εικόνα 3.1: Παράδειγμα δημιουργίας εφαρμογής για Windows Phone... 19 Εικόνα 3.2: Default XAML σελίδα... 21 Εικόνα 3.3: Αποτέλεσμα παραδείγματος XAML... 23 Εικόνα 3.4: Λειτουργία της υπηρεσίας Push Notification... 25 Εικόνα 4.1: TCP Segment... 29 Εικόνα 4.2: Παράδειγμα σωστής επικοινωνίας μεταξύ αποστολέα και παραλήπτη... 30 Εικόνα 4.3: Παράδειγμα λανθασμένης επικοινωνίας μεταξύ αποστολέα και παραλήπτη... 30 Εικόνα 5.1: Διάγραμμα ροής της διαδικασίας αναγνώρισης κίνησης... 36 Εικόνα 5.2: Server Push Notification... 37 Εικόνα 5.3: Κεντρικής οθόνη και οθόνης πληροφοριών της εφαρμογής... 43 Εικόνα 5.4: Quick Connect... 45 Εικόνα 5.5: Setup connection... 45 Εικόνα 5.6: Home screen... 45 8

ΠΕΡΙΛΗΨΗ Η παρούσα διπλωματική εργασία έχει ως κύριο στόχο την ανάπτυξη, τη σχεδίαση και την υλοποίηση εφαρμογής παρακολούθησης κλειστού χώρου για κινητά τηλέφωνα και πιο συγκεκριμένα για την πλατφόρμα Microsoft Windows Phone. Για την πλήρη λειτουργικότητα της εφαρμογής δημιουργήθηκε ακόμα μια εφαρμογή desktop με στόχο την δημιουργία του μοντέλου πελάτη-εξυπηρετητή (client-server). Η client (Windows Phone) εφαρμογή επιτρέπει στον χρήστη να συνδεθεί στον server (desktop εφαρμογή) και μέσω αυτού να παρακολουθήσει κάποιον κλειστό χώρο. Σε περίπτωση κίνησης στον χώρο ο server ενημερώνει τον client για το συμβάν. Λέξεις κλειδιά: Windows Phone, πελάτης-εξυπηρετητής, παρακολούθηση κλειστού χώρου. 9

ABSTRACT The aim of the present thesis was the design, development and implementation of a surveillance application using smartphones running Microsoft s Windows Phone. In order to achieve the full functionality of the Windows Phone application, a complementary desktop application was designed and developed to create a client-server model. The Windows Phone application allows the user to connect to the server (the desktop application) and surveil the desired place. In case of movement, the desktop application notifies the Windows Phone application for this incident. Keywords: Windows Phone, client-server, surveillance. 10

1. ΕΙΣΑΓΩΓΗ Τα κινητά τηλέφωνα εισήλθαν στον τομέα της τηλεπικοινωνίας με άμεσο στόχο την εξέλιξη του γνωστού σε όλους μας «σταθερού τηλεφώνου». Σκοπός τους η ευκολότερη και «γρηγορότερη» επικοινωνία μεταξύ των ανθρώπων, έχοντας την ικανότητα να μπορείς να καλείς όποιον θέλεις από οπού θέλεις. Στην αρχή θεωρήθηκαν ως «είδη πολυτελείας» μα σήμερα κατατάσσονται ως «είδος ανάγκης». Μια σύγχρονη οικογένεια έχει τουλάχιστον μια συσκευή κινητού τηλεφώνου στην κατοχή της. Η εξέλιξη όμως της τεχνολογίας έρχεται να εκμεταλλευτεί το κυριότερο πλεονέκτημα των κινητών τηλεφώνων, δηλαδή την ικανότητα να χρησιμοποιείς την συσκευή εν κινήσει, μετατρέποντας τα σε μικρούς κινητούς υπολογιστές. Γεννιέται το εξής ερώτημα: Smartphone: ακόμα ένα gadget ή εξέλιξη των ηλεκτρονικών υπολογιστών?. Η απάντηση προς το παρόν είναι: «Ο χρόνος μόνο θα δείξει». 11

1.1 Τι είναι Smartphone Εικόνα 1.1: Smartphones Ένα smartphone είναι ένα κινητό τηλέφωνο χτισμένο πάνω σε μια προγραμματιστική πλατφόρμα κινητού, με πιο προηγμένη υπολογιστική δυνατότητα από ένα απλό τηλέφωνο. Τα πρώτα smartphones κυρίως συνδύαζαν τις λειτουργίες ενός PDA (Personal Digital Assistant) και ενός απλού κινητού τηλεφώνου με ή χωρίς κάμερα. Τα σημερινά μοντέλα συνδυάζουν κι άλλες λειτουργίες όπως είναι η αναπαραγωγή μουσικών κομματιών, λήψη φωτογραφιών και βίντεο καθώς και πλοήγηση στους δρόμους με την χρήση της υπηρεσίας GPS. Τα σύγχρονα smartphones περιλαμβάνουν οθόνες αφής υψηλής ανάλυσης, που σε συνδυασμό με το UI (User Interface) του εκάστοτε smartphone καθιστά την συσκευή ως ένα πολύτιμο εργαλείο στα χέρια του χρήστη. Τα πιο συνηθισμένα λειτουργικά συστήματα που συναντάμε στα smartphones είναι τα: ios, με κατασκευαστή την Apple Android, με κατασκευαστή την Google Windows, με κατασκευαστή την Microsoft Symbian, με κατασκευαστή την Nokia BlackBerry OS, με κατασκευαστή την RIM Maemo and Memo, τα οποία είναι διανομές Linux για κινητά Τέτοια λειτουργικά συστήματα μπορούν να εγκατασταθούν σε πολλά διαφορετικά μοντέλα τηλεφώνων κάτι που πρακτικά σημαίνει ότι κάθε συσκευή μπορεί να δεχθεί αρκετές αναβαθμίσεις στο λειτουργικό του σύστημα καθ όλη την διάρκεια της ζωής της. 12

1.2 Ιστορική Αναδρομή Το 1973, πριν από την εφεύρεση του κινητού τηλεφώνου και 20 χρόνια πριν από την πώληση του πρώτου smartphone, ο Theodore George "Ted" Paraskevakos εισήγαγε τις έννοιες της ικανότητας νοημοσύνης και της ικανότητας της επεξεργασίας δεδομένων όπως επίσης και της οθόνης στα τηλεφωνά, έτσι έφερε στην επιφάνεια την ιδέα της γέννησης του smartphone. Το πρώτο κινητό τηλέφωνο που ενσωμάτωνε τις λειτουργίες ενός PDA ήταν ένα πρότυπο μοντέλο της IBM που δημιουργήθηκε το 1992 και παρουσιάστηκε για πρώτη φόρα την ίδια χρονιά. Η τελειοποιημένη, για τα τότε δεδομένα, έκδοση του προϊόντος κυκλοφόρησε στην αγορά στις 16 Αυγούστου του 1994 από την BellSouth με όνομα Simon Personal Communicator. Το Simon είναι η πρώτη συσκευή που μπορεί κάποιος να την ονομάσει ως ο «πρώτος πρόγονος του smartphone». Εκτός από την ικανότητά του να πραγματοποιεί και να δέχεται τηλεφωνικές κλήσεις, το Simon ήταν επίσης σε θέση να στέλνει και να λαμβάνει φαξ, e-mail και σελίδες μέσω της οθόνης αφής του. Στο Simon συμπεριλαμβάνονται πολλές εφαρμογές, όπως ένα βιβλίο διευθύνσεων, ημερολόγιο, αριθμομηχανή, παγκόσμιο ρολόι, παιχνίδια, ηλεκτρονικές σημειώσεις, χειρόγραφες σημειώσεις και πρότυπο πρόβλεψης στο πληκτρολόγια αφής του. 13

2. WINDOWS PHONES 2.1 Σχετικά με τα Windows Phones Τα Windows Phone είναι μια οικογένεια από λειτουργικά συστήματα κινητών τηλεφώνων που δημιουργήθηκαν από την Microsoft και θεωρούνται οι απόγονοι της πλατφόρμας Windows Mobile αν και δεν είναι συμβατή με αυτή. Σε αντίθεση με τα Windows Mobile τα Windows Phones απευθύνονται κυρίως στον μέσο χρήστη και όχι τόσο στην επιχειρησιακή αγορά. Κυκλοφόρησαν στην αγορά το 2 ο εξάμηνο του 2010. Με τα Windows Phones η Microsoft δημιούργησε ένα νέο περιβάλλον χρήστη. 2.2 Live Tiles Τα Windows Phones πλέον χαρακτηρίζονται από ένα καινούριο user interface βασισμένο στο καινούριο design της Microsoft για τα Windows Phones, που ονομάζεται Metro. Η κεντρική οθόνη, ονομάζεται Start Screen (οθόνη έναρξης), απαρτίζεται από τα Live Tiles. Τα Live Tiles είναι σύνδεσμοι που «ανοίγουν» τις εφαρμογές, με λίγα λόγια αποτελούν τις γνωστές συντομεύσεις που έχουμε συναντήσει στα Windows OS. Τα Live Tiles μπορεί να είναι σύνδεσμοι σε απλές εφαρμογές του Windows Phone ή σύνδεσμοι σε μεμονωμένες εφαρμογές (όπως είναι οι επαφές, διάφορες ιστοσελίδες, εφαρμογές που έχει εγκαταστήσει ο χρήστης ή και σε κάποιο πολυμεσικό αρχείο, μουσικής, φωτογραφίας ή και βίντεο). Ο χρήστης μπορεί να προσθέσει, να αφαιρέσει και να αλλάξει την θέση των Live Tiles. Εικόνα 2.1: Live tiles 14

Τα Live Tiles λειτουργούν δυναμικά και ανανεώνονται σε πραγματικό χρόνο. Για παράδειγμα το tile για την εφαρμογή η οποία λαμβάνει τα e-mail, θα δείχνει με έναν αριθμό πάνω στο εικονίδιο το πλήθος των αδιάβαστων e-mail που έχει ο χρήστης. Υπάρχουν 2 είδη tile: i] Τα Application Tiles και τα ii] Secondary Tiles. Application Tile: Είναι το εικονίδιο που δημιουργείται όταν ο χρήστης «καρφιτσώνει» μια εφαρμογή στην οθόνη έναρξης (start screen) κρατώντας πατημένο το εικονίδιο της εφαρμογής όταν αυτή βρίσκεται στην λίστα των εφαρμογών (επιλέγοντας Pin to Start ). Πατώντας πάνω στο Live Tile που βρίσκεται στην οθόνη έναρξης, ο χρήστης πλοηγείται στην εφαρμογή. Secondary Tile: Δημιουργείται προγραμματιστικά από μια εφαρμογή η οποία βασίζεται στην διαδραστικότητα του χρήστη. Ένα παράδειγμα είναι η εφαρμογή του καιρού. Ο χρήστης μπορεί να καρφιτσώσει στην οθόνη έναρξης ένα Live Tile για κάθε μια πόλη που θέλει να βλέπει τον καιρό της ο χρήστης. Τα Live Tiles έχουν 2 πλευρές. Τα εικονίδια εμφανίζουν πληροφορίες σχετικά με την εφαρμογή γυρίζοντας γύρω από ένα κάθετο ή οριζόντιο άξονα, συμμετρικά, εμφανίζοντας την μπροστά και την πίσω πλευρά του εικονιδίου. Αν δεν έχουν οριστεί ιδιότητες εμφάνισης για την πίσω πλευρά του εικονιδίου τότε το Live Tile δεν «περιστρέφεται», και εμφανίζεται μόνο η μπροστινή όψη του. Εικόνα 2.2: Μπροστά και πίσω όψη ενός Live Tile Οι ιδιότητες ενός Application Tile και ενός Secondary Tile είναι ακριβώς οι ίδιες. Οι ιδιότητες ενός Application Tile για την μπροστινή όψη είναι: Τίτλος: Μία λέξη που αναφέρεται στον τίτλο της εφαρμογής. Ο Τίτλος πρέπει να έχει μέγιστο πλήθος γραμμάτων τέτοιο έτσι ώστε να χωράει σε μια μόνο γραμμή και το 15

πλάτος του να μην ξεπερνάει το πλάτος του Tile. Συνήθως το μέγιστο πλήθος χαρακτήρων είναι 15 χαρακτήρες. Background Image: Μια εικόνα η οποία εμφανίζεται στην μπροστά όψη του Live Tile. Count: Είναι ένας ακέραιος αριθμός από το 1 μέχρι το 99. Αν η τιμή του count δεν έχει οριστεί ή έχει οριστεί σε τιμή 0 τότε το κυκλικό εικονίδιο του count και η τιμή του δεν θα εμφανίζονται. Οι ιδιότητες ενός Application Tile για την πίσω όψη είναι: Back Title: Μία λέξη η οποία εμφανίζεται στην πίσω όψη του Live Tile ως τίτλος. Και εδώ όπως και στην μπροστινή όψη, ο τίτλος δεν πρέπει να υπερβαίνει σε πλάτος το Live Tile και συνήθως το μέγιστο πλήθος χαρακτήρων είναι 15 χαρακτήρες. Back Background Image: Μία εικόνα η οποία εμφανίζεται στο πίσω μέρος του Live Tile. Back Content: Ένα σύνολο χαρακτήρων οι οποίοι εμφανίζονται στην μέση του back tile. To μέγιστο πλήθος χαρακτήρων είναι 40 χαρακτήρες. 16

3. SOFTWARE ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΕ Για την δημιουργία της πτυχιακή εργασίας χρησιμοποιήθηκε το Visual Studio 2010 Professional και η γλώσσα προγραμματισμού C#, Silverlight όπως επίσης και το framework.net 4 της Microsoft. 3.1 Φιλοσοφία Για την επικοινωνία των 2 εφαρμογών, client-server, χρησιμοποιήθηκε το μοντέλο πελάτη-εξυπηρετητή με sockets. Το ευρύτερα διαδεδομένο μοντέλο ανάπτυξης δικτυακών εφαρμογών είναι το μοντέλο του πελάτη-εξυπηρετητή (client-server). Ο εξυπηρετητής είναι μια διεργασία, η οποία εκτελείται σε έναν υπολογιστή και αναμένει να συνδεθεί σε αυτήν κάποιο πρόγραμμα - ο πελάτης, όπως ονομάζεται -, για να του παρέχει υπηρεσίες. Ένα τυπικό σενάριο που ακολουθείται συνήθως, είναι το εξής: Η διεργασία εξυπηρετητής αρχίζει να εκτελείται σε κάποιον υπολογιστή. Μετά την αρχικοποίηση της, πέφτει σε λήθαργο, αναμένοντας μία διεργασία-πελάτη να επικοινωνήσει μαζί της και να της ζητήσει κάποια υπηρεσία. Μία διεργασία πελάτης αρχίζει να εκτελείται, είτε στο ίδιο σύστημα, είτε σε κάποιο απομακρυσμένο, το οποίο συνδέεται με τον υπολογιστή στον οποίο «τρέχει» ο εξυπηρετητής μέσω δικτύου. Η διεργασία πελάτης στέλνει μια αίτηση, μέσω του δικτύου, στον εξυπηρετητή, ζητώντας του κάποιου είδους υπηρεσία (π.χ. μεταφορά αρχείου, απομακρυσμένη εκτύπωση, ανάγνωση και αποστολή mail και άλλες). Ταυτόχρονα με την εξυπηρέτηση κάποιου πελάτη, ο server έχει την δυνατότητα να δέχεται και αιτήσεις άλλων πελατών προς εξυπηρέτηση. Όταν ο εξυπηρετητής τελειώσει με όλους τους πελάτες, τότε ξαναπέφτει σε «λήθαργο», περιμένοντας για μια καινούργια αίτηση και η διαδικασία ξαναρχίζει από την αρχή. Ορίζουμε ως σύνδεση, τον επικοινωνιακό δίαυλο μεταξύ δύο διεργασιών. Την σύνδεση μπορούμε να την θεωρήσουμε ως μία πεντάδα, που περιγράφεται ως εξής : πρωτόκολλο, τοπική-διεύθυνση, τοπική-διεργασία, απομακρυσμένη-διεύθυνση, απομακρυσμένηδιεργασία. Το πρωτόκολλο αναφέρεται στο σύνολο των κανόνων που διέπουν την 17

επικοινωνία. Η τοπική διεύθυνση και απομακρυσμένη διεύθυνση, προσδιορίζουν την ταυτότητα των υποδικτύων και των υπολογιστών, στους οποίους εκτελούνται οι επικοινωνούσες διεργασίες. Η τοπική διεργασία και απομακρυσμένη διεργασία, προσδιορίζουν την ταυτότητα των διεργασιών που θα επικοινωνούν, καθώς σε έναν υπολογιστή, μπορούν να εκτελούνται περισσότερες της μιας διεργασίες. Κάθε μία από αυτές τις διεργασίες που εκτελούνται στον ίδιο host και που χρειάζονται επικοινωνία μέσω δικτύου, λαμβάνει έναν 16-bit ακέραιο αριθμό, ο οποίος αναπαριστά την θύρα (port number) της διεργασίας και κατ επέκταση, της υπηρεσίας. Ορίζουμε, επίσης ως μισή σύνδεση (half association), είτε το σύνολο πρωτόκολλο, τοπική- διεύθυνση, τοπική-διεργασία, είτε το σύνολο πρωτόκολλο, απομακρυσμένη-διεύθυνση, απομακρυσμένη-διεργασία. Η μισή σύνδεση ονομάζεται αλλιώς και socket. Socket είναι το ένα άκρο από έναν επικοινωνιακό δίαυλο διπλής κατεύθυνσης μεταξύ δύο προγραμμάτων που εκτελούνται στο δίκτυο. Περιλαμβάνει το πρωτόκολλο, την διεύθυνση και τον αριθμό θύρας του άκρου. 3.2 Microsoft DirectShow To DirectShow είναι μια υψηλού επιπέδου επεκτάσιμη αρχιτεκτονική ροής δεδομένων εικόνας και ήχου για την πλατφόρμα των Windows. Παρέχει τα βασικά στοιχεία του λογισμικού και επαφές προγραμματισμού εφαρμογών (Application Programming Interface, API) για ένα μεγάλο εύρος εφαρμογών διαχείρισης ψηφιακού ήχου και βίντεο που κυκλοφορούν στην αγορά. Είναι διαθέσιμο σαν μέρος του Microsoft DirectX SDK (Software Development Kit). Στο DirectShow όλα τα εξαρτήματα ροής δεδομένων ονομάζονται φίλτρα (filters). Σαν φίλτρο μπορεί να χρησιμοποιηθεί μια συσκευή hardware, ένας κωδικοποιητής ή αποκωδικοποιητής ή οποιοδήποτε πρόγραμμα το οποίο προσφέρει επεξεργασία οπτικοακουστικού υλικού. H Microsoft παρέχει δύο φίλτρα που ενσωματώνουν τα μέρη του Windows Format SDK προκειμένου οι εφαρμογές που στηρίζονται στο DirectShow να μπορούν να δέχονται και να γράφουν σε Windows Media Format το περιεχόμενό τους. 18

3.3 Windows Phone Application Example Οι Windows Phone εφαρμογές αποτελούνται από σελίδες οι οποίες κατασκευάζονται με την γλώσσα XAML (Extensible Application Markup Language). Παρακάτω θα παρουσιαστεί ένα παράδειγμα για το πώς δημιουργείται μια απλή Windows Phone εφαρμογή. Είναι απαραίτητο να σημειωθεί ότι χρειάζεται το Windows Phone SDK για να δημιουργηθεί μια εφαρμογή για Windows Phone, όπως επίσης και το.net Framework 4 της Microsoft. Έχοντας τα προαπαιτούμενα πακέτα (Windows Phone SDK,.NET 4 Framework): Ξεκινάμε δημιουργώντας ένα νέο project στο Visual Studio. Επιλέγουμε ως γλώσσα προγραμματισμού την C#, επιλέγουμε το είδος της εφαρμογής που θέλουμε να δημιουργήσουμε με την συγκεκριμένη γλώσσα, Silverlight for Windows Phone, και από τις επιλογές που μας δίνει επιλέγουμε Windows Phone Application. Εικόνα 3.1: Παράδειγμα δημιουργίας εφαρμογής για Windows Phone 19

Αυτόματα δημιουργείται ο ακόλουθος κώδικας: <phone:phoneapplicationpage x:class="phoneapp1.mainpage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:microsoft.phone.controls;assembly=microsoft.phone" xmlns:shell="clr-namespace:microsoft.phone.shell;assembly=microsoft.phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:ignorable="d" d:designwidth="480" d:designheight="768" FontFamily="StaticResourcePhoneFontFamilyNormal" FontSize="StaticResourcePhoneFontSizeNormal" Foreground="StaticResourcePhoneForegroundBrush" SupportedOrientations="Portrait" Orientation="Portrait" shell:systemtray.isvisible="true"> <!--LayoutRoot is the root grid where all page content is placed--> <Grid x:name="layoutroot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!--TitlePanel contains the name of the application and page title--> <StackPanel x:name="titlepanel"grid.row="0" Margin="12,17,0,28"> <TextBlock x:name="applicationtitle" Text="MY APPLICATION" Style="StaticResourcePhoneTextNormalStyle"/> <TextBlock x:name="pagetitle" Text="page name" Margin="9,-7,0,0" Style="StaticResource PhoneTextTitle1Style"/> </StackPanel> <!--ContentPanel - place additional content here--> <Grid x:name="contentpanel"grid.row="1" Margin="12,0,12,0"></Grid> </Grid> </phone:phoneapplicationpage> 20

που αντιστοιχεί στην default δημιουργία μιας XAML σελίδας. Εικόνα 3.2: Default XAML σελίδα Αναλυτικότερα, όπως και στην HTML (HyperText Markup Language) έτσι και εδώ όλα γίνονται με την χρήση των tags (ετικετών). Δημιουργούμε το «πλέγμα» μέσα στο οποίο θα τοποθετηθούν όλα τα οπτικά αντικείμενα μας όπως για παράδειγμα κάποιες «ετικέτες» (περιέχουν κείμενο και ο σκοπός τους είναι να το εμφανίζουν στην οθόνη του κινητού), κουμπιά κλπ. <Grid x:name="layoutroot" Background="Transparent"> </Grid> Μέσα στο πλέγμα, ορίζουμε τις διαστάσεις των στηλών του: <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinitionHeight="*"/> </Grid.RowDefinitions> 21

Έπειτα, δημιουργούμε το «ορθογώνιο» με τον τίτλο της εφαρμογής: <StackPanel x:name="titlepanel"grid.row="0" Margin="12,17,0,28"> <TextBlock x:name="applicationtitle" Text="MY APPLICATION" Style="StaticResourcePhoneTextNormalStyle"/> <TextBlock x:name="pagetitle" Text="page name" Margin="9,-7,0,0" Style="StaticResource PhoneTextTitle1Style"/> </StackPanel> Το tag TextBlock (<TextBlock></TextBlock) δημιουργεί έναν χώρο μέσα στο πλέγμα, μέσα στο οποίο θα εμφανίζεται ένα προκαθορισμένο κείμενο. Το προκαθορισμένο αυτό κείμενο ορίζεται από την «ιδιότητα» Text. Δημιουργούμε το «ορθογώνιο» που θα περιέχει το content της εφαρμογής. Κι αυτό είναι πρακτικά ένα πλέγμα. <Grid x:name="contentpanel"grid.row="1"margin="12,0,12,0"></grid> </Grid> Αν θέλουμε να δημιουργήσουμε ένα κουμπί για την εφαρμογή μας, μπορούμε είτε να χρησιμοποιήσουμε το Toolbox του Visual Studio και ουσιαστικά να κάνουμε drag n drop το αντικείμενο (κουμπί), είτε να το εισάγουμε με κώδικα. Για παράδειγμα μέσα στο content grid εισάγουμε το εξής: <Grid x:name="contentpanel" Grid.Row="1"Margin="12,0,12,0"></Grid> <Button Content="Button" Height="72"HorizontalAlignment="Left" Margin="146,273,0,0" Name="button1" VerticalAlignment="Top" Width="160" /> </Grid> 22

Το αποτέλεσμα είναι αυτό Εικόνα 3.3: Αποτέλεσμα παραδείγματος XAML Κάθε XAML σελίδα συνδέεται άμεσα με ένα αρχείο C# (C Sharp, κατάληξη.cs ) μέσα στο οποίο υλοποιείται όλη η λειτουργικότητα των αντικειμένων που βρίσκονται μέσα της. Η αρχική σελίδα ονομάζεται MainPage.xaml, επομένως υπάρχει και το MainPage.xaml.cs μέσα στο οποίο θα υλοποιηθεί μια απλή μέθοδο. Έστω παράδειγμα όπου ο χρήστης πατώντας το κουμπί (button) επιθυμεί να αλλάζει ο τίτλος της σελίδας από page name σε this is a test. Κάνοντας διπλό κλικ πάνω στο αντικείμενο button δημιουργείται αυτόματα μέσα στο.cs αρχείο μια μέθοδος που ελέγχει τι θα γίνει όταν πατηθεί το κουμπί. Το.cs αρχείο του παραδείγματος μοιάζει κάπως έτσι: 23

using System; using System.Windows; using System.Windows.Controls; using Microsoft.Phone.Controls; namespace PhoneApp1 public partial class MainPage : PhoneApplicationPage public MainPage() InitializeComponent(); private void button1_click(object sender, RoutedEventArgs e) PageTitle.Text = "This is test"; Κάτω από τον δομητή MainPage() δημιουργήθηκε η μέθοδος που καλείται όταν πατηθεί το κουμπί (Click Event). Μέσα σε αυτή τη μέθοδο, βρίσκουμε το όνομα του στοιχείου/αντικειμένου με το οποίο θέλουμε να αλληλεπιδράσουμε, που βρίσκεται στη XAML σελίδα και στην ιδιότητα Text αναθέτουμε μια νέα τιμή. Μόλις πατηθεί το κουμπί, ο τίτλος της σελίδας από page name θα αλλάξει αμέσως σε This is a test. 3.4 Push Notification Το Push Notification είναι μια υπηρεσία η οποία επιτρέπει σε μια εφαρμογή να ειδοποιεί τον χρήστη όταν έχει ένα καινούριο μήνυμα ή έχει συμβεί κάποιο γεγονός χωρίς να είναι πρακτικά αναγκασμένος να ανοίξει την εφαρμογή, κάτι παρόμοιο με τον τρόπο που ενημερώνεται όταν έχει ένα νέο μήνυμα, ακούγεται ένας ήχος και εμφανίζεται ένα μικρό pop up (αναδυόμενο) παράθυρο στην επιφάνεια του κινητού. 24

Εικόνα 3.4: Λειτουργία της υπηρεσίας Push Notification Η υπηρεσία Push Notification δουλεύει ως εξής: Η εφαρμογή ζητά να της δοθεί ένα μοναδικό «κανάλι» επικοινωνίας (URI) από την υπηρεσία Push (1). Έπειτα η Push υπηρεσία σε συνεργασία με την Push Notification υπηρεσία της Microsoft επιστρέφει στην εφαρμογή το URI (μοναδικό κανάλι επικοινωνίας) (2-3). Η εφαρμογή στέλνει το URI στην cloud υπηρεσία η οποία θα είναι υπεύθυνη για τις ενημερώσεις (4). Εφόσον υπάρχουν πληροφορίες για αποστολή (από την cloud υπηρεσία πίσω στην εφαρμογή), χρησιμοποιείται το URI για να στείλει μια ειδοποίηση στην Push υπηρεσία της Microsoft (5), η οποία με την σειρά της αποστέλλει την ειδοποίηση στην εφαρμογή η οποία βρίσκεται στο Windows Phone(6). Ανάλογα με την μορφή που έχει η ειδοποίηση και το ωφέλιμο φορτίο (το ουσιαστικό περιεχόμενο των πακέτων που μεταφέρονται κατά την μετάδοση δεδομένων, χωρίς επικεφαλίδα κλπ) που περιέχεται στην ειδοποίηση, η πληροφορία φτάνει ως raw data (ακατέργαστα δεδομένα) στην εφαρμογή και είτε γίνεται μια ανανέωση στο Tile της εφαρμογής ενημερώνοντας τον χρήστη ότι έχει μια ειδοποίηση είτε εμφανίζεται ένα pop up μήνυμα στην κορυφή του Windows Phone ενημερώνοντας τον χρήστη για το ίδιο πράγμα. Η υπηρεσία Push Notification της Microsoft στέλνει ένα response code (μια απάντηση) στην cloud υπηρεσία ενημερώνοντας το πώς, i] πήρε την ειδοποίηση και ii] πως θα στείλει την ειδοποίηση στην συσκευή το συντομότερο δυνατόν. 25

4. ΠΡΩΤΟΚΟΛΛΑ ΔΙΚΤΥΩΝ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΑΝ Για την υλοποίηση της σύνδεσης μεταξύ της server εφαρμογής και της client χρησιμοποιήθηκε το πρωτόκολλο TCP/IP από το επίπεδο μεταφοράς του μοντέλου αναφοράς OSI. 4.1 Επίπεδο Μεταφοράς Ένα από τα πλέον σημαντικά επίπεδα που ορίζει το μοντέλο αναφοράς OSI είναι το επίπεδο μεταφοράς. Παρέχει διαφανή και αξιόπιστη μετάδοση μεταξύ των δυο άκρων τις επικοινωνίας μέσω μιας πληθώρας υπηρεσιών. Πιο συγκεκριμένα το επίπεδο μεταφοράς παραλαμβάνει τα πακέτα που του παραδίδει το επίπεδο συνοδού, τα τεμαχίζει σε μικρότερα κομμάτια που ονομάζονται segments (τμήματα) και έπειτα τα παραδίδει προς μετάδοση στο στρώμα δικτύου εξασφαλίζοντας όμως ότι αυτά θα φτάσουν χωρίς λάθη και με την σωστή σειρά στον προορισμό τους. Το επίπεδο αυτό καθορίζει ποιον τύπο υπηρεσίας θα προσφέρει στο επίπεδο συνόδου. Το επίπεδο μεταφοράς περιλαμβάνει κατά βάση δυο πρωτόκολλα, το TCP (Transmission Control Protocol) και το UDP (User Datagram Protocol), και ανάλογα από το ποιο θα χρησιμοποιηθεί καθορίζει και τον τύπο της υπηρεσίας. To TCP προσφέρει αξιόπιστη μεταφορά δεδομένων με σύνδεση (υπηρεσία του TCP). Αναλυτικότερα οι υπηρεσίες του πρωτοκόλλου TCP είναι: Connection Oriented (Εργασία με σύνδεση). Το TCP είναι ένα πρωτόκολλο από άκρο σε άκρο (end-to-end) το οποίο λειτουργεί δημιουργώντας νοητά κυκλώματα (virtual circuits) μεταξύ των 2 άκρων της σύνδεσης. Reliable Data Transfer (αξιόπιστη μεταφορά δεδομένων). Το TCP περιλαμβάνει μηχανισμούς που εγγυώνται την αξιόπιστη μεταφορά δεδομένων από τον ένα χρήστη στον άλλο. Τέτοιοι μηχανισμοί είναι η ανίχνευση και διόρθωση λαθών (error detection/correction), η αρίθμηση των τμημάτων (segments) έτσι ώστε να πετύχουμε την παράδοση τους και την ανασύνταξη τους με την σωστή σειρά, μηχανισμούς αναγνώρισης και επαναπροώθησης των χαμένων τμημάτων κ.α. Flow Control (έλεγχος ροής). Το TCP παρέχει την υπηρεσία ελέγχου ροής η οποία προστατεύει τους αργούς hosts του δικτύου από την υπερχείλιση των μνημών τους 26

είτε γιατί έχουν συνδεθεί με ένα πιο γρήγορο host και η μνήμη τους είναι περιορισμένη είτε γιατί το εύρος ζώνης (bandwidth) της σύνδεσης μεταξύ των δυο hostείναι πολύ μεγάλο. Congestion Control (έλεγχος συμφόρησης). Η συμφόρηση ενός δικτύου συμβαίνει όταν ο όγκος των πακέτων που διακινούνται μέσω αυτού είναι μεγαλύτερος από το όριο που μπορούν να διαχειριστούν οι κόμβοι του και έτσι αναγκάζονται να απορρίψουν (drop) έναν αριθμό πακέτων γιατί οι buffers τους έχουν υπερχειλίσει. Το αποτέλεσμα της συμφόρησης είναι πολύ χαμηλή ταχύτητα μετάδοσης, χαμένα πακέτα και στο τέλος κατάρρευση του δικτύου με ότι αυτό συνεπάγεται. Το TCP διαθέτει ένα μηχανισμό έλεγχου της συμφόρησης και μειώνει την ροη των μεταδιδόμενων πακέτων προς το δίκτυο μέχρις ότου να ομαλοποιηθεί η κατάσταση. 4.2 Ιδιότητες τουtcp Οι ιδιότητες του πρωτοκόλλου TCP είναι: Stream Orientation.Όταν δυο εφαρμογές χρήστη ανταλλάσουν μεγάλες ποσότητες δεδομένων θεωρούμε τα δεδομένα σαν μια ακολουθία από bits, χωρισμένη σε οκτάδες των 8bit που ονομάζονται octets ή bytes. To TCP είναι υπεύθυνο να παραδώσει στον παραλήπτη ακριβώς την ίδια ακολουθία από bytes που έστειλε ο αποστολέας. Virtual Circuit Connection. Το να γίνει μια επιτυχής μετάδοση μιας ακολουθίας από bytes είναι ανάλογο με το να κάνει κάποιος ένα επιτυχημένο τηλεφώνημα. Πριν αρχίσει η μετάδοση και τα δυο προγράμματα που βρίσκονται στο επίπεδο εφαρμογής (ο αποστολέας και ο αποδέκτης) επικοινωνούν με τα λειτουργικά τους συστήματα ειδοποιώντας τα για την επιθυμία τους να στείλουν η να λάβουν δεδομένα. Τελικά η μια εφαρμογή πραγματοποιεί μια «κλήση» (call) που πρέπει να αποδεχτεί η άλλη. Οι δυο υποστάσεις του πρωτοκόλλου που βρίσκονται στα άκρα της σύνδεσης επικοινωνούν στέλνοντας μηνύματα μέσω του δικτύου για να επιβεβαιώσουν ότι και οι δυο άκρες είναι έτοιμες ώστε να αρχίσει η μετάδοση. Όταν έχουν ταχτοποιηθεί όλες οι λεπτομέρειες τα πρωτοκόλλα ενημερώνουν τα προγράμματα στο στρώμα εφαρμογής ότι η σύνδεση επετεύχθη και ότι η μετάδοση μπορεί να ξεκινήσει. Κατά τη διάρκεια της μετάδοσης τα δυο πρωτόκολλα συνεχίζουν να επικοινωνούν ώστε να 27

εξασφαλίσουν ότι τα δεδομένα που λαμβάνονται είναι σωστά. Αν η σύνδεση παρουσιάσει πρόβλημα για οποιοδήποτε λόγο τα πρωτόκολλα ενημερώνουν τα προγράμματα στο επίπεδο εφαρμογής ώστε να διακόψουν την σύνδεση. Buffered Transfer. Τα προγράμματα στέλνουν μια ακολουθία δεδομένων κατά μήκος του νοητού κυκλώματος (virtual circuit) δίνοντας στο λογισμικό του πρωτοκόλλου οκτάδες από δεδομένα. Όταν μεταδίδονται δεδομένα, κάθε εφαρμογή χρησιμοποιεί όποιο μέγεθος πακέτου θεωρεί ιδανικό το οποίο μπορεί να είναι όσο μικρό όσο μια οκτάδα. Στο άλλο άκρο, το πρωτόκολλο παραδίδει τις οκτάδες των δεδομένων της ακολουθίας ακριβώς με την ίδια σειρά που στάλθηκαν. Τα δεδομένα είναι διαθέσιμα στο πρόγραμμα μόλις παραληφθούν και ελεγχθεί η ορθότητα τους. Το πρωτόκολλο αποφασίζει για το βέλτιστο μέγεθος πακέτου που θα μεταδώσει ομαδοποιώντας τα δεδομένα του προγράμματος ανεξάρτητα από το μέγεθος πακέτου που χρησιμοποιεί η εφαρμογή. Full Duplex Connection. Οι συνδέσεις που παρέχει η υπηρεσία μετάδοσης του TCP επιτρέπουν την ταυτόχρονη μετάδοση δεδομένων και στις δυο κατευθύνσεις. Τέτοιες συνδέσεις ονομάζονται full duplex (πλήρως αμφίδρομες). Από την οπτική ενός προγράμματος, μια πλήρως αμφίδρομη σύνδεση αποτελείται από δυο ανεξάρτητες ακολουθίες δεδομένων που ρέουν σε αντίθετες κατευθύνσεις, χωρίς εμφανή αλληλεπίδραση. Η υπηρεσία μετάδοσης επιτρέπει σε μια εφαρμογή να τερματίζει την ροη σε μια κατεύθυνση όσο συνεχίζεται η ροη στην άλλη κατεύθυνση, κάνοντας έτσι την σύνδεση πλήρως αμφίδρομη. Το πλεονέκτημα μιας πλήρως αμφίδρομης σύνδεσης είναι ότι το πρωτόκολλο μπορεί να στέλνει πληροφορίες έλεγχου στα πακέτα επαλήθευσης για μια ακολουθία δεδομένων που ρέει προς την αντίθετη κατεύθυνση. Αυτή η μέθοδος μειώνει την κίνηση στα δίκτυα καθώς δεν χρειάζεται να δημιουργούνται επιπλέον πακέτα. 4.3 Πως μοιάζει ένα τμήμα (segment) Η μονάδα μεταφοράς του πρωτοκόλλου TCP μεταξύ δυο συστημάτων ονομάζεται τμήμα (segment). Τα segments ανταλλάσσονται μεταξύ των hosts για να ξεκινήσει ή να λήξει μια σύνδεση, για να μεταφερθούν δεδομένα, να σταλούν μηνύματα επαλήθευσης (acknowledgements) και για όλες τις υπόλοιπες λειτουργίες που υποστηρίζει το πρωτόκολλο 28

TCP. Κάθε segment χωρίζεται σε δυο μέρη, την επικεφαλίδα (header) και τα δεδομένα (data). Η επικεφαλίδα αποτελεί την ταυτότητα του κάθε πακέτου και περιλαμβάνει όλες τις πληροφορίες που χρειάζονται για να το αναγνωρίσει και να το επεξεργαστεί σωστά ο παραλήπτης. Εικόνα 4.1: TCP Segment 4.4 Παροχή Αξιοπιστίας (Providing Reliability) τουtcp Η πιο σημαντική ιδιότητα του TCP πρωτοκόλλου είναι η παροχή αξιόπιστης υπηρεσίας μετάδοσης. Η τεχνική που χρησιμοποιεί το TCP ονομάζεται positive acknowledgement (ACK) with transmission. Για την εφαρμογή αυτής της τεχνικής ο παραλήπτης χρειάζεται να επικοινωνεί με τον αποστολέα, στέλνοντας του ένα μήνυμα επαλήθευσης (ACK) για κάθε πακέτο που παραλαμβάνει. Στην πιο απλή εφαρμογή αυτής της τεχνικής ο αποστολέας διατηρεί ένα αρχείο με εγγραφές για κάθε πακέτο που έχει στείλει και περιμένει μια επαλήθευση πριν στείλει το επόμενο. Στην Εικόνα 4.2 βλέπουμε ένα παράδειγμα σωστής επικοινωνίας μεταξύ αποστολέα και παραλήπτη. 29

Εικόνα 4.2: Παράδειγμα σωστής επικοινωνίας μεταξύ αποστολέα και παραλήπτη Μια από τις πιο σημαντικές και πολύπλοκες ιδέες στο TCP είναι ο τρόπος με τον οποίο χειρίζεται τις αναμεταδόσεις των δεδομένων που αργούν να επαληθευτούν ή χάνονται εντελώς. Κάθε φορά που στέλνει ένα segment το TCP ξεκινά ένα χρονομετρητή αναμετάδοσης (transmission timer) και περιμένει για επαλήθευση. Αν ο χρόνος που έχει καθοριστεί για το χρονόμετρο λήξει πριν τα δεδομένα που στάλθηκαν με το segment επαληθευτούν, το TCP συμπεραίνει ότι το segment χάθηκε ή έφτασε κατεστραμμένο στον προορισμό του και το ξαναστέλνει (Εικόνα 4.3). Εικόνα 4.3: Παράδειγμα λανθασμένης επικοινωνίας μεταξύ αποστολέα και παραλήπτη 30

Το TCP είναι σχεδιασμένο να λειτουργεί σε ένα περιβάλλον διαδικτύου. Σε ένα διαδίκτυο όπως για παράδειγμα το ΙΝΤΕΡΝΕΤ, ένα segment ταξιδεύοντας μεταξύ ενός ζεύγους μηχανών, μπορεί να χρειαστεί να διασχίσει πάρα πολλά υποδίκτυα διαφορετικής φιλοσοφίας, ταχύτητας μετάδοσης και μεγέθους που είναι συνδεδεμένα μεταξύ τους μέσω πολλαπλών δρομολογητών. Αυτό έχει σαν αποτέλεσμα να μην μπορεί να ξέρει από την αρχή πόσο χρόνο θα κάνει το segment να φτάσει στον προορισμό του και να σταλεί και η επαλήθευση. Εκτός από αυτό, η καθυστέρηση που θα συναντήσει το πακέτο σε κάθε δρομολογητή εξαρτάται από την συμφόρηση του εκάστοτε δικτύου, επομένως ο συνολικός χρόνος αποστολής και επαλήθευσης μπορεί να έχει τεράστια διαφορά σε κάθε περίπτωση. Για όλους αυτούς τους λόγους το TCP είναι σχεδιασμένο να αλλάζει συμπεριφορά στις διαφορετικές καθυστερήσεις των δικτύων χρησιμοποιώντας έναν προσαρμοστικό αλγόριθμο αναμετάδοσης (adaptive retransmission algorithm). Στην ουσία το TCP εξετάζει την απόδοση κάθε σύνδεσης και παράγει τις κατάλληλες τιμές για τις τιμές των χρονομέτρων. Όσο η απόδοση της σύνδεσης αλλάζει τόσο το TCP υπολογίζει ξανά τις τιμές των μετρητών του. Για να συλλέγει όλα τα δεδομένα που χρειάζεται ο προσαρμοστικός αλγόριθμος, το TCP καταγράφει το χρόνο που αποστέλλεται κάθε segment και το χρόνο που φτάνει η επαλήθευση για τα δεδομένα που μετέφερε το συγκεκριμένο segment. Χρησιμοποιώντας τους δυο αυτούς χρόνους το TCP παράγει τον χρόνο που πέρασε μέχρι να ολοκληρωθεί η διαδικασία (RTT, Round Trip Time). Κάθε φορά που το TCP λαμβάνει μια καινούρια τιμή για το RTT, υπολογίζει ξανά τον σταθμισμένο μέσο όρο όλων των RTT που έχει λάβει χρησιμοποιώντας την Εξίσωση 1: (1) Η μεταβλητή α, όπου 0 α 1, μας δείχνει το πόσο θα επηρεάσει το τελευταίο δείγμα του RTT την παλιά τιμή. Αν πάρουμε μια τιμή κοντά στο 1 ο μέσος όρος θα γίνει πιο «αναίσθητος» στις αλλαγές που διαρκούν λίγο χρόνο (για παράδειγμα αν υπήρχε μόνο ένα 31

segment που συνάντησε πολύ μεγάλη καθυστέρηση). Αν πάρουμε μια τιμή κοντά στο 0 τότε ο μέσος όρος θα αντιδρά στις αλλαγές του χρόνου καθυστέρησης πολύ γρήγορα. Όταν στέλνει ένα πακέτο, το TCP υπολογίζει την τιμή λήξης του χρονομετρητή αναμετάδοσης σαν συνάρτηση της τρέχουσας τιμής του μέσου όρου του RTT με τον τύπο:, (2) όπου το β είναι μια σταθερή παράμετρος (β>1). Πάντα η τιμή λήξης είναι μεγαλύτερη από τον μέσο όρο του χρόνου μετάβασης με επιστροφή στον προορισμό. Ανάλογα με το πόσο μεγάλο είναι το β τόσο μεγαλύτερες ανοχές έχει το TCP πριν αναμεταδώσει ένα segment. Αν το β=1 τότε η παραμικρή αύξηση της καθυστέρησης πάνω από το χρόνο RTT θα οδηγούσε σε αναμετάδοση, κάτι που θα γέμιζε το δίκτυο με άχρηστα πακέτα. 32

5. ΕΦΑΡΜΟΓΕΣ ΠΟΥ ΑΝΑΠΤΥΧΘΗΚΑΝ Για την υλοποίηση της διπλωματικής εργασίας αναπτύχθηκαν 2 εφαρμογές, ένας server και ένας client. Σκοπός τους η μεταφορά εικόνας από έναν υπολογιστή στο κινητό τηλέφωνο με απώτερο σκοπό την παρακολούθηση κλειστού χώρου. Υπάρχει ένας Η/Υ (με μια η περισσότερες web cameras) στον επιθυμητό χώρο παρακολούθησης ο οποίος βρίσκεται σε λειτουργία και στον οποίο βρίσκεται η server εφαρμογή που αναπτύχθηκε και ονομάσθηκε See Beyond the Cameras ή πιο σύντομα SBtC. Η mobile εφαρμογή (SBtC Client) συνδέεται στον server και από κει δέχεται τις εικόνες που στέλνει ο server σε αυτήν. Σε περίπτωση που εντοπιστεί κίνηση στον χώρο παρακολούθησης ο server στέλνει μια ειδοποίηση στην mobile εφαρμογή έτσι ώστε να συνδεθεί και να παρακολουθήσει την σκηνή. Αναλυτικότερα οι εφαρμογές: 5.1 See Beyond the Cameras Server Γραμμένος σε C# (.NET 4 Framework Microsoft). Η Windows Desktop αυτή εφαρμογή περιλαμβάνει τις ακόλουθες λειτουργίες: Δημιουργία Χρήστη Λειτουργία Server Καταγραφή συμβάντων Motion Detection Push Notification 5.1.1 Δημιουργία Χρήστη Για να μπορέσει κάποιος να συνδεθεί μέσω κάποιας client εφαρμογής στον server θα πρέπει να αυθεντικοποιήσει τον εαυτό του. Σκοπός αυτής της λειτουργίας είναι η αποφυγή χρήσης του server από ανεπιθύμητους χρήστες. Για τον λόγο αυτό, ο ιδιοκτήτης της εφαρμογής server μπορεί - είναι υποχρεωμένος - να δημιουργήσει λογαριασμούς χρηστών με 33

όνομα χρήστη και κωδικό πρόσβασης έτσι ώστε να υπάρχει απόλυτος έλεγχος για το ποιός και πότε χρησιμοποιεί την εφαρμογή. Τα στοιχεία του χρήστη αποθηκεύονται σε ένα Extensible Markup Language (XML) αρχείο μέσα στον φάκελο της εφαρμογής. Σε αυτό το σημείο θα ήταν χρήσιμο να αναφερθεί ότι ο κωδικός πρόσβασης δεν αποθηκεύεται σε μια απλή μορφή χαρακτήρων αλλά κείτεται πρώτα από μια μέθοδο κωδικοποίησης/κρυπτογράφησης (md5). 5.1.2 Λειτουργία Server H πιο σημαντική λειτουργία αυτής της εφαρμογής, είναι η λειτουργία της ως εξυπηρετητής (server). Ο εξυπηρετητής, είναι υπεύθυνος για την άμεση εξυπηρέτηση των πελατών και με την έννοια «πελάτης» εννοούμε οποιαδήποτε εφαρμογή θέλει/μπορεί να συνδεθεί σε αυτόν με σκοπό κάποια συγκεκριμένη μεταφορά δεδομένων. Ο συγκεκριμένος εξυπηρετητής περιμένει να συνδεθεί κάποιος πελάτης (client). Μόλις πραγματοποιηθεί η σύνδεση, ο server ζητάει από τον client να του στείλει τα στοιχεία του χρήστη που θέλει να έχει πρόσβαση στην λειτουργία του. Ελέγχει αν τα στοιχεία του χρήστη υπάρχουν στο XML αρχείο των χρηστών που έχει δημιουργηθεί από τον διαχειριστή της εφαρμογής και εφόσον η αυθεντικοποίηση ολοκληρωθεί με επιτυχία, ο server ξεκινά να αποστέλλει πληροφορίες, στην περίπτωσή μας εικόνες, στον χρήστη ο οποίος συνδέθηκε. Η μεταφορά των εικόνων αυτών γίνεται με την μορφή byte array. Με την βοήθεια του DirectShow παίρνουμε από την webcam το κάθε frame (στιγμιότυπο) σε μορφή πινάκα byte (byte array). Με την μεταφορά κάθε εικόνας ο server περιμένει να λάβει ένα μήνυμα από τον client πριν αρχίσει την αποστολή της επόμενης εικόνας. 5.1.3 Καταγραφή Συμβάντων Με την λειτουργία αυτή, η εφαρμογή έχει την δυνατότητα να καταγράφει γεγονότα που συμβαίνουν. Όταν συνδέεται ένα πελάτης στον server, o server κρατάει το όνομα χρήστη που ζητάει σύνδεση, την ώρα που ζήτησε την σύνδεση, και την διεύθυνση από την οποία στάλθηκε το αίτημα της σύνδεσης. 34

Δουλειά της server εφαρμογής είναι να έχει συνέχεια την κάμερα ή τις κάμερες σε συνεχή λειτουργία έτσι ώστε να παρακολουθούν τον χώρο. Αν η κάμερα εντοπίσει κάποια κίνηση, αποθηκεύει σε ένα αρχείο την χρονική στιγμή στην οποία εντόπισε την κίνηση. Επίσης έχει την δυνατότητα να αποθηκεύει την κάθε εικόνα από την στιγμή που θα εντοπίσει κίνηση στον χώρο. 5.1.4 Αναγνώριση κίνησης - Motion Detection Όταν αναγνωρισθεί κίνηση στον χώρο τον οποίο παρακολουθείται, ο server αντιλαμβάνεται την κίνηση και ειδοποιεί μέσω της υπηρεσίας Push Notification τον client για το συμβάν. Για την αναγνώριση της κίνησης δεν χρησιμοποιήθηκε κάποιος αισθητήρας κίνησης, αλλά αναπτύχθηκε κώδικας σε γλώσσα C#. Καθώς ξεκινά η εφαρμογή (server), η κάμερα λαμβάνει την πρώτη εικόνα και την ονομάζει Old. Μετά από λίγο, η κάμερα λαμβάνει την δεύτερη εικόνα και την ονομάζει Current. Συγκρίνονται μεταξύ τους η Old και την Current, συγκρίνοντας το χρώμα του κάθε pixel της μιας με το αντίστοιχο pixel* της άλλης. Αν η διαφορά τους είναι μεγαλύτερη από μια συγκεκριμένη τιμή (η συγκεκριμένη τιμή εξαρτάται από την ποιότητα της web camera), τότε η εφαρμογή αντιλαμβάνεται ότι υπάρχει κίνηση στον χώρο και ειδοποιεί τον client (Εικόνα 5.1) *Η λέξη pixel προέρχεται από τις λέξεις "picture element" και είναι η βασική μονάδα, ψηφίο, για οτιδήποτε εμφανίζεται στην οθόνη ενός Η/Υ (και όχι μόνο). Αν κοιτάξετε με ένα καλό μεγεθυντικό φακό την οθόνη του υπολογιστή σας, θα δείτε πως όλα όσα βλέπετε σε αυτήν (γράμματα, γραμμές, γραφικά κ.λπ.) έχουν δημιουργηθεί από πολύ μικρά ψηφία (μικρά τετράγωνα κουτάκια). Αυτά είναι τα pixels, οι δομικές μονάδες κάθε σχήματος που εμφανίζεται στην οθόνη. 35

Εικόνα 5.1: Διάγραμμα ροής της διαδικασίας αναγνώρισης κίνησης 5.1.5 Push Notification Καθώς η κάμερα αντιλαμβάνεται την οποιαδήποτε κίνηση πρέπει με κάποιον τρόπο να ειδοποιήσει τον χρήστη ότι κάποιος εισέβαλλε στον χώρο του (ο οποίος παρακολουθείται από την server εφαρμογή). Εδώ έρχεται να μας βοηθήσει η τεχνολογία/υπηρεσία η οποία ονομάζεται Push Notification. Σκοπός της είναι να στέλνει μηνύματα στην εκάστοτε εφαρμογή που είναι άμεσα συνδεδεμένη με την υπηρεσία. Πρακτικά δημιουργείται ένα μοναδικό «κανάλι» επικοινωνίας της εφαρμογής client με την εφαρμογή server. 36

Εικόνα 5.2: Server Push Notification Κώδικας Υλοποίησης αποστολής ειδοποίησης: try // Get the URI that the Microsoft Push Notification Service returns to the push client when creating a notification channel. // Normally, a web service would listen for URIs coming from the web client and maintain a list of URIs to send // notifications out to. string subscriptionuri = "http://db3.notify.live.net/throttledthirdparty/01.00/aaens5mnjjw5q6zjuzpwdgjragaaaaadaqaaaa QUZm52OjIzOEQ2NDJDRkI5MEVFMEQ"; HttpWebRequest sendnotificationrequest = (HttpWebRequest)WebRequest.Create(subscriptionUri); Service. // Create an HTTPWebRequest that posts the toast notification to the Microsoft Push Notification // HTTP POST is the only method allowed to send the notification. sendnotificationrequest.method = "POST"; // The optional custom header X-MessageID uniquely identifies a notification message. // If it is present, the same value is returned in the notification response. It must be a string that contains a UUID. // sendnotificationrequest.headers.add("x-messageid", "<UUID>"); // Create the toast message. string toastmessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<wp:notification xmlns:wp=\"wpnotification\">" + "<wp:toast>" + "<wp:text1>" + getlocalip() + "</wp:text1>" + "<wp:text2>" + getpublicip() + "</wp:text2>" + "<wp:text3>" + "Intrusion Detection" + "</wp:text3>" + "</wp:toast> " + 37

"</wp:notification>"; // Set the notification payload to send. byte[] notificationmessage = Encoding.Default.GetBytes(toastMessage); // Set the web request content length. sendnotificationrequest.contentlength = notificationmessage.length; sendnotificationrequest.contenttype = "text/xml"; sendnotificationrequest.headers.add("x-windowsphone-target", "toast"); sendnotificationrequest.headers.add("x-notificationclass", "2"); using (Stream requeststream = sendnotificationrequest.getrequeststream()) requeststream.write(notificationmessage, 0, notificationmessage.length); // Send the notification and get the response. HttpWebResponse response = (HttpWebResponse)sendNotificationRequest.GetResponse(); string notificationstatus = response.headers["x-notificationstatus"]; string notificationchannelstatus = response.headers["x-subscriptionstatus"]; string deviceconnectionstatus = response.headers["x-deviceconnectionstatus"]; // Display the response from the Microsoft Push Notification Service. catch (Exception ex) //TextBoxResponse.Text = "Exception caught sending update: " + ex.tostring(); 38

5.1.6 Κώδικας υλοποίησης Server O server υλοποιείται από την κλάση tcpserver της οποίας η δομή είναι η εξής: using System; using System.Text; using System.Net.Sockets; using System.Threading; using System.Net; using System.Windows.Forms; using System.Data.SQLite; using System.Data; using System.IO; using System.ComponentModel; namespace SBtC class tcpserver BackgroundWorker check_the_socket = new BackgroundWorker(); bool shutdown = false; TcpClient client; bool user_connected = false; public bool User_connected get return user_connected; set user_connected = value; public void start() System.Windows.Threading.DispatcherTimer dispatchertimer = new System.Windows.Threading.DispatcherTimer(); dispatchertimer.tick += new EventHandler(check_for_online_socket); dispatchertimer.interval = new TimeSpan(0, 0, 0, 1); dispatchertimer.start(); private void check_for_online_socket(object sender, EventArgs e) check_the_socket.dowork += new DoWorkEventHandler(check_the_socket_DoWork); check_the_socket.runworkercompleted += new RunWorkerCompletedEventHandler(check_the_socket_RunWorkerCompleted); if (!check_the_socket.isbusy) check_the_socket.runworkerasync(); 39

public void check_the_socket_dowork(object sender, DoWorkEventArgs e) if (client == null) e.result = false; else e.result = true; private void check_the_socket_runworkercompleted(object sender, RunWorkerCompletedEventArgs e) User_connected = (bool)e.result; public MainForm MyPreview; public void startpreview() MyPreview = new MainForm(); MyPreview.Show(); private TcpListener tcplistener; private Thread listenthread; private bool clientconnected = false; public tcpserver() try startpreview(); this.tcplistener = new TcpListener(IPAddress.Any, 30000); this.listenthread = new Thread(new ThreadStart(ListenForClients)); this.listenthread.start(); catch (Exception e) MessageBox.Show(e.Message); private void ListenForClients() this.tcplistener.start(); while (true) //blocks until a client has connected to the server client = this.tcplistener.accepttcpclient(); User_connected = true; //create a thread to handle communication //with connected client Thread clientthread = new Thread(new ParameterizedThreadStart(HandleClientComm)); clientthread.start(client); 40

public bool getclient() return clientconnected; private void HandleClientComm(object client) TcpClient tcpclient = (TcpClient)client; NetworkStream clientstream = tcpclient.getstream(); byte[] username = new byte[4096]; byte[] password = new byte[4096]; byte[] commands = new byte[4096]; int bytesread = 0; while (true) try //blocks until a client sends a message ASCIIEncoding encoder = new ASCIIEncoding(); bytesread = clientstream.read(username, 0, 4096); String name = encoder.getstring(username, 0, bytesread); bytesread = clientstream.read(password, 0, 4096); String pass = encoder.getstring(password, 0, bytesread); Console.Write(" Username: " + name + " " + "Password: " + pass); bool check = false; // check = checkuser(name, pass); // Console.Write(" " + "Check value is : " + check.tostring() + "\n"); check = true; if (check == true) TextWriter tw = new StreamWriter("C:\\SbC\\log.txt", true); tw.writeline("user:" + " " + name + " " + "connected at:" + " " + DateTime.Now + " " + " from " + " " + tcpclient.client.remoteendpoint.tostring()); tw.close(); clientstream.flush(); byte[] buffer = encoder.getbytes("ok");//login acceepted Console.Write("I sent OK\n"); clientstream.write(buffer, 0, buffer.length); int count = 0; byte[] transferimage = MyPreview.getimage(); clientstream.flush(); clientstream.write(transferimage, 0, transferimage.length); count++; //Console.Write(count + " " + " Images have been sent with size of " + " " + gr.length + "\n"); bytesread = clientstream.read(commands, 0, 4096); String commandexc = encoder.getstring(commands, 0, bytesread); Console.Write(" I received the command" + " " + commandexc + "\n"); while (commandexc.equals("next")) transferimage = MyPreview.getimage(); clientstream.flush(); clientstream.write(transferimage, 0, transferimage.length); 41

count++; Console.Write(count + " " + " Images have been sent with size of " + " " + transferimage.length + "\n"); bytesread = clientstream.read(commands, 0, 4096); commandexc = encoder.getstring(commands, 0, bytesread); Console.Write(" I received the command" + " " + commandexc + "\n"); if (commandexc.equals("exit")) shutdown = true; break; else clientstream.flush(); byte[] buffer = encoder.getbytes("error"); clientstream.write(buffer, 0, buffer.length); Console.Write("I sent ERROR\n"); catch //a socket error has occured break; if (client == null) Console.Write("\nClient Disconnected from the Server!\n"); //the client has disconnected from the server break; //message has successfully been received // ASCIIEncoding encoder2 = new ASCIIEncoding(); // System.Diagnostics.Debug.WriteLine(encoder2.GetString(message, 0, bytesread)); tcpclient.close(); client = null; if (shutdown) Application.Exit(); 42

5.2 See Beyond the Cameras (Windows Phone) Client Γραμμένος σε C# και Silverlight (.NET 4) ο client κληρονομεί όλα τα θετικά στοιχεία που προσφέρει η αντικειμενοστραφής (object-oriented) αυτή γλώσσα της Microsoft, όπως τη δυνατότητα της άμεσης επεξεργασίας και τροποποίησης των οπτικών/λειτουργικών αντικειμένων που προσφέρει το Visual Studio για το προγραμματισμό του.. Ο client αποτελείται από «σελίδες» XAML που πρακτικά αποτελούν το UI, υλοποιημένος πάνω σε pivot σχεδιασμό. Ο σχεδιασμός pivot είναι ο τρόπος πλοήγησης του χρήστη μεταξύ των XAML σελίδων. Ο χρήστης «σέρνοντας» το δάχτυλο του αριστερά-δεξιά πάνω στην touchscreen οθόνη της συσκευής του μπορεί να πλοηγηθεί μεταξύ της κεντρικής οθόνης και της οθόνης πληροφοριών της εφαρμογής (Εικόναα 5.3). Εικόνα 5. 3: Κεντρικής οθόνη και οθόνης πληροφοριών της εφαρμογής H windows phone αυτή εφαρμογή αποτελείται από τις ακόλουθες λειτουργίες: Quick Connect (Γρήγορης Σύνδεση στον server) New (Δημιουργία Νέας τοποθεσίας) 43

Save My Location (Αποθήκευση της Νέας τοποθεσίας) Push Notification Pin to Start (Καρφίτσωμα της τοποθεσίας στην κεντρική οθόνη του Windows Phone Edit (Επεξεργασία της τοποθεσίας) Delete (Διαγραφή της τοποθεσίας) 5.2.1 Quick Connect Ο χρήστης ακουμπώντας το δάχτυλο του πάνω στην περιοχή Quick Connect μεταφέρεται αυτόματα στην σελίδα γρήγορης σύνδεσης στον server που μέσω της οποίας είναι υποχρεωμένος να πληκτρολογήσει την διεύθυνση στην οποία βρίσκεται ο server όπως επίσης και να εισάγει τα στοιχεία του λογαριασμού του (που έχει δημιουργήσει στην serverεφαρμογή) (Εικόνα 5.4). Με το που αγγίξει ο χρήστης το κουμπί «Connect» θα συνδεθεί μέσω TCP protocol στον server και εφόσον τα στοιχεία του λογαριασμού του είναι σωστά θα μεταφερθεί αμέσως στην σελίδα προβολής εικόνων. Εδώ ο χρήστης παρακολουθεί τον χώρο στον οποίο βρίσκεται η κάμερα του server. 5.2.2 New Ο χρήστης δεν είναι αναγκασμένος να θυμάται την διεύθυνση του server και φυσικά η εφαρμογή δεν περιορίζεται σε έναν μόνο server. Εκτός από την επιλογή Quick Connect ο χρήστης μπορεί να δημιουργήσει «τοποθεσίες». Στην αρχική σελίδα ο χρήστης αγγίζοντας την περιοχή «New» μεταφέρεται στην οθόνη δημιουργίας νέας τοποθεσίας (Εικόνα 5.5). Μια καινούρια τοποθεσία πρακτικά αποθηκεύει στην συσκευή τα στοιχεία «επικοινωνίας» με την εφαρμογή server. Ο χρήστης δίνει το επιθυμητό όνομα για την τοποθεσία που θέλει να δημιουργήσει, πληκτρολογεί την διεύθυνση του υπολογιστή στον 44

οποίο βρίσκεται ο server, η πόρτα είναι προεπιλεγμένη (connection port: 30000), πληκτρολογεί τα στοιχεία του λογαριασμού του και αγγίζει το κουμπί Save My Location. Αυτόματα στην αρχική οθόνη δημιουργείται κάτω από την λέξη Locations ένα «αντικείμενο» με το όνομα που έχει δώσει ο χρήστης στην έκαστων τοποθεσία (Εικόνα 5.6). Εικόνα 5.4: Quick Connect Εικόνα 5.5: Setup connection Εικόνα 5.6: Home screen 5.2.3 Save My Location Ο χρήστης εφόσον συμπληρώσει τα στοιχεία που χρειάζονται στην σελίδα δημιουργίας νέας τοποθεσίας πατώντας το κουμπί Save My Location εκτελείται η διαδικασία αποθήκευσης των στοιχείων αυτών σε ένα XML αρχείο στην μνήμη του κινητού. 45