CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο

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

MusicOnCloud: Μια cloud-based υπηρεσία online streaming μουσικής

HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη

2η Προγραµµατιστική Εργασία

HY-486 Αρχές Κατανεμημένου Υπολογισμού

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init()

50 Ketseo,Theoni Sarif,Omar 104

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ. Επίπεδα Αφαίρεσης Σ Β. Αποθήκευση Εγγραφών - Ευρετήρια. ρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, Επίπεδο Όψεων.

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

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

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Στρατηγικές Ασφάλειας

HY-335a Project: microtcp, μία lightweight TCP βιβλιοθήκη. Deadline πρώτης ϕάσης : 19/11/ :59

Πληροφορική & Τηλεπικοινωνίες K25 Ανάπτυξη Λογισμικού Εαρινό Εξάμηνο 2008 Καθηγητής Γιάννης Ιωαννίδης. Μέρος 2ο: Επίπεδο Ευρετηρίου Β+ Δένδρων

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

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

Πληροφορική & Τηλεπικοινωνίες Υλοποίηση Συστημάτων Βάσεων Δεδομένων - Χειμερινό Εξάμηνο Καθηγητής Δ. Γουνόπουλος

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

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

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

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

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

3.2 Το αυτοδύναμο πακέτο IP (datagram) Δομή πακέτου

HY-335a Project: microtcp 1, μία lightweight TCP βιβλιοθήκη

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Χειμερινό Εξάμηνο M. Χατζόπουλος. Προθεσμία: 19/01/2015

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών.

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

$./MirrorInitiator -n <MirrorServerAddress> -p <MirrorServerPort> \\ -s <ContentServerAddress1:ContentServerPort1:dirorfile1:delay1, \\

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

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

make Προγραμματισμός II 1

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

Προγραμματισμός Δομές Δεδομένων

2 η Σειρά Ασκήσεων Data Link Layer

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

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

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

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

T.E.I. ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Δομημένος Προγραμματισμός (ΤΛ1006)

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. DICOM Επικοινωνία Γενικά

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

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

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών


Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

7.5 Πρωτόκολλο IP. & Ερωτήσεις

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΚΕΦΑΛΑΙΟ Web Services

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

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

Επαναληπτικό µάθηµα επί των αρχών λειτουργίας του ιαδικτύου. ρ. Κωνσταντίνος Σ. Χειλάς. Ethernet

Προγραμματισμός ΙΙ Εαρινό εξάμηνο Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 1 17/01/2012

ΕΑΠ/ΠΛΗ22/ΑΘΗ.3 4 η ΟΣΣ 15/03/2014 Συμπληρωματικές Διαφάνειες

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

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

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

ΑΣΚΗΣΗ 1. Structural Programming

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

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

1 Ερωτήσεις σωστό-λάθος

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

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ.

ΔΙΚΤΥΑ Η/Υ ΙΙ. Πρωτόκολλα δρομολόγησης

Sheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

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

HY150a Φροντιστήριο 3 24/11/2017

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

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

Εισαγωγή στην Αριθμητική Ανάλυση

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ

Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών ΗΥ463 Συστήματα Ανάκτησης Πληροφοριών Χειμερινό Εξάμηνο

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

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

Τυπικές χρήσεις της Matlab

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

Σημειώνουμε ότι τα αρχεία περιλαμβάνουν κανονικά αρχεία, καταλόγους και συνδέσμους (links). Οι αντίστοιχες εντολές είναι οι εξής:

Transcript:

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο Project Phase 1 ΗΥ - 335α Χειμερινό εξάμηνο 2012-2013 Διδάσκουσα: Παπαδοπούλη Μαρία Υπεύθυνος βοηθός: Σουρλίγκας Μανώλης, surligas@csd.uoc.gr 23 Δεκεμβρίου 2013 Παράδοση πρώτης φάσης: 20/1/2014 1

Περίληψη Στην πρώτη φάση του project ο κάθε Cloudbox client θα πρέπει να είναι σε θέση να αναγνωρίζει τις αλλαγές των αρχείων του directory που παρακολουθεί και να ενημερώνει κατάλληλα όλους τους άλλους clients που τρέχουν στο ίδιο subnet, στέλνοντας ένα broadcast μήνυμα χρησιμοποιώντας UDP. Κάθε client που λαμβάνει ένα broadcast μήνυμα, θα ελέγχει την κατάσταση του δικού του directory και αν χρειάζονται να γίνουν αλλαγές, θα συνδέεται στον κατάλληλο client χρησιμοποιώντας TCP, για να ξεκινήσει η μεταφορά του αρχείου. 1 Γενική μορφή μηνυμάτων Για να μπορούν οι clients να επικοινωνήσουν θα πρέπει το κάθε μήνυμα να έχει μια συγκεκριμένη μορφή. Τα πρώτα 2 bytes του μηνύματος περιέχουν το είδος του μηνύματος. Οι διάφοροι τύποι μηνυμάτων είναι οι εξής: 2 First Bytes Type 0x01 Μήνυμα Κατάστασης 0x02 Το directory του client δεν έχει αλλαγές 0x03 Ένα νέο αρχείο προστέθηκε 0x04 Ένα αρχείο τροποποιήθηκε 0x05 Ένα αρχείο διαγράφτηκε 0x06 Ένας άλλος client ζητάει ένα αρχείο 0x07 Ένας άλλος client προσφέρει ένα αρχείο 0x08 Το directory δεν περιέχει κάποιο αρχείο 0xFFFF Καμία ενέργεια. Χρησιμοποιείται για debug. Φυσικά μπορείτε να επεκτείνετε τους πιθανούς τύπους μηνυμάτων και να προσθέσετε αυτούς που σας βολεύουν. Τον τύπο του μηνύματος ακολουθούν μια σειρά από άλλα fields, άλλα υποχρεωτικά και άλλα υποχρεωτικά ανά περίπτωση. Θα πρέπει να τοποθετούνται με την σειρά που αναφέρονται παρακάτω: 2

Client name: Μεταβλητό μήκος. Για να μπορέσει να αναγνωρίσει ο receiver το όνομα του sender, το όνομα τοποθετείται ανάμεσα στα bytes 0x0 και 0x0. Αυτό γίνεται γιατί το 0x0 δεν είναι printable χαρακτήρας, οπότε είναι αδύνατο να δόθηκε σαν client name. Υποχρεωτικό για κάθε μήνυμα. Client TCP listening port: Μήκος 2 bytes. Περιέχει την port στην οποία περιμένει ο client για TCP connections. Η port αυτή πρέπει να είναι κάποια τυχαία διαθέσιμη που παρέχει το λειτουργικό και όχι κάποια ορισμένη από τον χρήστη. Υποχρεωτικό για κάθε πακέτο. Current time timestamp: Μήκος 8 bytes. Περιέχει την ώρα που στάλθηκε το πακέτο σε δευτερόλεπτα από το Epoch time. Υποχρεωτικό για κάθε μήνυμα. File modification timestamp: Μήκος 8 bytes. Περιέχει την ώρα που τροποποιήθηκε το αρχείο σε δευτερόλεπτα από το Epoch time. Υποχρεωτικό ανά περίπτωση. File name: Το όνομα του αρχείου. Μεταβλητό μήκος. Για να μπορέσει να αναγνωρίσει ο receiver το όνομα του αρχείου, το όνομα τοποθετείται ανάμεσα στα bytes 0x0 και 0x0. Αυτό γίνεται γιατί το 0x0 δεν είναι printable χαρακτήρας, οπότε είναι αδύνατο να δόθηκε σαν όνομα αρχείου. Υποχρεωτικό ανά περίπτωση. SHA1 checksum: Μήκος 20 bytes. To SHA1 checksum του αρχείου ή το SHA1 όλων των επιμέρους SHA1 των αρχείων, στην περίπτωση που το directory δεν έχει αλλαγές από την τελευταία φορά που ελέγχθηκε. Υποχρεωτικό ανά περίπτωση. File length: Μήκος 8 bytes. Το μέγεθος του πακέτου σε bytes. Υποχρεωτικό ανά περίπτωση. Παράδειγμα ενός μηνύματος που δηλώνει ότι το directory δεν έχει αλλαγές: 2 bytes Variable Length 2 bytes 8 bytes 20 bytes 0x02 0x0test10x0 1881 1548784512 29b12...1e3f5 3

Το πρόγραμμα χρησιμοποιεί δύο ειδών πρωτόκολλα για τα μηνύματα. UDP: O client στέλνει ένα UDP broadcast πακέτο κάθε φορά που ελέγχει το directory για αλλαγές αρχείων. Ανάλογα με την κατάσταση του directory κάνει broadcast αν αυτό είναι άδειο, αν δεν άλλαξε κανένα αρχείο από την τελευταία φορά που ελέγχθηκε ή αν κάποιο αρχείο προστέθηκε ή αφαιρέθηκε. TCP: Ένας client συνδέεται χρησιμοποιώντας TCP με έναν άλλον, για να στείλει ή λάβει ένα αρχείο καθώς και (προαιρετικά) για να επιβεβαιώσει την διαγραφή ενός άλλου. 2 Παρακολούθηση για αλλαγές αρχείων στον τοπικό φάκελο Βασική λειτουργία του προγράμματος είναι ο περιοδικός έλεγχος του directory για τυχόν αλλαγές. Αυτό μπορεί να γίνει εύκολα κρατώντας χαρακτηριστικές ιδιότητες των αρχείων σε μια λίστα. Η struct της λίστας ορίζεται στο cloudbox.h header file και περιέχει τα εξής πεδία. struct d i r _ f i l e s _ s t a t u s _ l i s t { char *filename ; size_t size_in_bytes ; char sha1sum[sha1_bytes_len ] ; long long int modification_time_from_epoch ; }; struct d i r _ f i l e s _ s t a t u s _ l i s t *previous ; struct d i r _ f i l e s _ s t a t u s _ l i s t *next ; To filename, το μέγεθος του αρχείου, το SHA1 checksum και η ώρα τροποποίησης είναι αρκετά ώστε να μπορεί το πρόγραμμα να αναγνωρίσει αν έγινε ή όχι κάποια αλλαγή στο directory. Μετά από κάθε έλεγχο για αλλαγές, ο client στέλνει ένα UDP broadcast μήνυμα, αναφέροντας την κατάσταση του directory του σε όλους 4

τους client του subnet χρησιμοποιώντας τον κατάλληλο τύπο μηνύματος. Οι βασικές περιπτώσεις είναι οι εξής: 1. Το directory δεν περιέχει αρχεία. Σε αυτή την περίπτωση το μήνυμα έχει τύπο 0x08 και εκτός των υποχρεωτικών fields περιέχει την ώρα του client και την ώρα τροποποίησης του τελευταίου αρχείου πριν το directory αδειάσει ή 0 αν αυτό δεν υπήρχε. 2. Το directory περιέχει αρχεία, αλλά δεν έγιναν αλλαγές από την τελευταία προσπέλαση. Σε αυτή την περίπτωση το μήνυμα έχει τύπο 0x2. Εκτός των υποχρεωτικών fields περιέχει την ώρα του client, την πιο πρόσφατη ώρα τροποποίησης αρχείου, καθώς και το SHA1 του string που σχηματίζεται από τα SHA1 checksums όλων των αρχείων, αύξουσα ταξινομημένα με βάση το όνομά τους. Αυτό γίνεται, διότι κάποια στιγμή μπορεί να εισέλθει ένας client με clean directory το οποίο όμως είναι διαφορετικό από το clean directory ενός άλλου client. Επομένως οι δύο clients θα πρέπει να συγχρονίσουν το directory τους με τα πιο πρόσφατα αρχεία. 3. Ένα αρχείο προστέθηκε. Το μήνυμα έχει τύπο 0x03 και εκτός των υποχρεωτικών fields περιλαμβάνει την ώρα του client, την ώρα τροποποίησης του αρχείου, το όνομά του, το μέγεθός του καθώς και το SHA1 checksum του. 4. Ένα αρχείο τροποποιήθηκε. Το μήνυμα έχει τύπο 0x04 και τα ίδια fields με την προηγούμενη περίπτωση. 5. Ένα αρχείο διαγράφτηκε. Το μήνυμα έχει τύπο 0x05 και τα ίδια fields με τις προηγούμενες δύο περιπτώσεις. 5

3 Παρακολούθηση για αλλαγές αρχείων από άλλους Cloudbox Clients Κάθε client παρακολουθεί το δίκτυο για broadcast μηνύματα από άλλους clients και ενεργεί κατάλληλα για κάθε τύπο μηνύματος. Για αυτή την φάση, θα πρέπει ο client να είναι σε θέση να λαμβάνει αυτά τα broadcast μηνύματα, να εκτυπώνει ένα μήνυμα που να εμφανίζει: 1. Το όνομα του client 2. Τον τύπο του μηνύματος 3. Την IP του remote client την οποία θα πρέπει να βρείτε προγραμματιστικά και όχι μέσω κάποιου field στα περιεχόμενα του μηνύματος 4. Την TCP listening port του remote client 5. Ό,τι άλλο κρίνετε απαραίτητο Επίσης θα πρέπει να στέλνει στον client από τον οποίο έλαβε το broadcast μήνυμα, ένα debug μήνυμα χρησιμοποιώντας TCP, το οποίο με την σειρά του θα εκτυπώνεται στον client που το λαμβάνει. 4 Command Line Arguements Σας δίνετε το clientbox.c αρχείο το οποίο περιέχει μια main. Τα arguements της main δεν μπορείτε να τα αλλάξετε. Μπορείτε να προσθέσετε βέβαια τα δικά σας. Πιο αναλυτικά οι παράμετροι της main είναι οι εξής: -n clientname: Το όνομα του client. Θα πρέπει να είναι μοναδικό για το subnet στο οποίο τρέχει ο cloudbox client. 6

-d directory: Το path του directory του οποίο τα αρχεία θέλουμε να συγχρονίσουμε. Αν ο χρήστης δώσει κάποιο relative path ή symbolic links αυτό θα πρέπει να μετατραπεί σε absolute path, για την αποφυγή τυχόν προβλημάτων. -i interval: Το όρισμα αυτό ορίζει κάθε πόσα λεπτά ο client θα ελέγχει για αλλαγές στα αρχεία που περιέχει το directory που παρακολουθεί. -b port: Η πόρτα την οποία θα χρησιμοποιήσει ο client για να στείλει και να λάβει broadcast UDP μηνύματα. Προφανώς όλοι οι clients θα πρέπει να χρησιμοποιούν την ίδια για να είναι σε θέση να επικοινωνήσουν. 5 Άλλες πληροφορίες Για να είστε σε θέση να χρησιμοποιήσετε την SHA1() συνάρτηση και να κάνετε compile το πρόγραμμα θα πρέπει να έχετε εγκατεστημένα στον υπολογιστή σας τα development (header) files της openssl βιβλιοθήκης. Το Makefile που σας παρέχετε βάζει τα κατάλληλα flags, οπότε δεν χρειάζεται να κάνετε οτιδήποτε άλλο. Επίσης θα πρέπει να υλοποιήσετε όλες τις συναρτήσεις που βρίσκονται στο header file και να προσθέσετε τις δικές σας. Συναρτήσεις που καταλήγουν σε _thread() θα πρέπει να τρέχουν σε ξεχωριστά threads. Η πρώτη φάση θα έχει συμβουλευτικό χαρακτήρα, δεν θα βαθμολογηθεί αλλά θα είναι pass or fail. Βασικές απαιτήσεις αυτής της φάσης είναι η στοιχειώδης παρακολούθηση του directory για αλλαγές, η αποστολή και λήψη UDP μηνυμάτων και η αποστολή και λήψη debug TCP μηνύματος. Η εξέταση θα γίνει σε Linux μηχανήματα, οπότε το project σας θα πρέπει να τρέχει σε αυτό το περιβάλλον. Αν δεν έχετε πολλαπλούς υπολογιστές σε ένα δίκτυο, μπορείτε να χρησιμοποιήσετε εικονικά μηχανήματα που παρέχονται σε φοιτητές από το ΕΔΕΤ. Για περισσότερες πληροφορίες https://vima.grnet.gr 7