Network Manager σε Java και ubuntu 10.04

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Network Manager σε Java και ubuntu 10.04

Δημοσίευσηαπό adem1 » 26 Οκτ 2012, 10:34

Πόσο δύσκολο είναι να φτιάξει κανείς έναν Network Manager σε Java για Ubuntu 10.04 το έχει προσπαθήσει ποτέ κανείς από δω; Να σας πως πως δεν θα είναι ακριβώς network manager καθώς θα κάνει τα πάντα που κάνει ένας network manager έκτος από το να επιτευχθεί η σύνδεση σε κάποιο δίκτυο.
Εργασία της σχολής μου είναι αυτή. Ρωτάω γιατί μου φάνηκαν κουλά 2 πράγματα, πρώτον μου φαίνεται κουλό να το κάνεις σε java, (θα προτιμούσα c++) και δεύτερο κουλό ρώτησα γιατί να μην το κάνουμε σε 12.04; Και η απάντηση που πήρα από τον μεταπτυχιακό ήταν ότι πρέπει να γίνει σε 10.04 γιατί δεν έχουν τεστάρει στην 12.04 πως αντιδρά και αν είναι συμβατός ο κώδικας που έχουν γράψει σε netbeans με 12.04 (o λόγος που έβαλα 10.04 στο Pc2), ισχύει κάτι τέτοιο; Δηλαδή να μην είναι συμβατός ο κώδικας και να μου βγάζει σφάλματα;
Τα φώτα σας παρακαλώ!
Pc1
3 Intel Core i5-3317U CPU @ 1.70GHz ‖ RAM 5856 MiB ‖ ASUS S56CA
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 0a)
Pc 2
3 Intel Core2 CPU E8400 3.00GHz ‖ RAM 3962 MiB ‖ FOXCONN P45A01
4 ATI RV730XT [Radeon HD 4670] [1002:9490]
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 01)
Άβαταρ μέλους
adem1
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 733
Εγγραφή: 27 Οκτ 2011, 20:17
IRC: adem1
Εκτύπωση

Re: Network Manager σε Java και ubuntu 10.04

Δημοσίευσηαπό simosx » 26 Οκτ 2012, 10:58

Πρώτα από όλα, έχω την εντύπωση ότι την ίδια ερώτηση έκανε πρόσφατα και άλλο (νέο) μέλος στο φόρουμ μας.
Είναι η εργασία αυτή μόνο για σένα, ή είναι για όλη την τάξη;

Δε μπορώ να φανταστώ σημαντικές διαφορές σε σχέση με το NM μεταξύ των εκδόσεων 10.04 και 12.04.
Πρέπει να υπάρχει κάποιος ιδιαίτερος λόγος για την απαίτηση σε Java· υπάρχει εκφώνηση;
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Network Manager σε Java και ubuntu 10.04

Δημοσίευσηαπό adem1 » 26 Οκτ 2012, 14:48

simosx έγραψε:Είναι η εργασία αυτή μόνο για σένα, ή είναι για όλη την τάξη;
Είναι για όλη την τάξη, χωρισμένη σε ομάδες των τριών.
simosx έγραψε:υπάρχει εκφώνηση;
Ναι αλλά δεν υπάρχει σε pdf και η επικόλληση σε αρχείο όφφιψε βγαίνει χάλια. Γιαυτό την βάζω σε spoiler

Spoiler: show
Ανάπτυξη Λογισμικού για Δίκτυα και Τηλεπικοινωνίες (Δικτυακός Προγραμματισμός) (Κ23-Β)
Εργασία Ανάπτυξη Λογισμικού για Δίκτυα και Τηλεπικοινωνίες (Δικτυακός Προγραμματισμός) (Κ23-Β) Βοήθεια
Στοιχεία εργασίας
Τίτλος: Εργασία Ανάπτυξη Λογισμικού για Δίκτυα και Τηλεπικοινωνίες (Δικτυακός Προγραμματισμός) (Κ23-Β)
Περιγραφή:

Στα πλαίσια του μαθήματος καλείστε να υλοποιήσετε ένα πρωτότυπο σύστημα παρακολούθησης ΙΕΕΕ 802.11 σταθμών βάσης (WiFi Access Points). Το συνολικό σύστημα θα αποτελείται από 3 επιμέρους υποσυστήματα:

Λογισμικό παρακολούθησης περιβάλλοντος σε PC/Laptop,
Λογισμικό αποθήκευσης και παρουσίασης της πληροφορίας.
Λογισμικό παρακολούθησης του στίγματος και της μπαταρίας σε Smartphone/PDA, απεικόνιση και μετάδοση της πληροφορίας.



Οι τεχνολογίες που απαιτούνται και θα καλυφθούν στα πλαίσια του μαθήματος είναι οι παρακάτω:



IP διευθυνσιοδότηση
Linux Interface Configuration & Wireless Tools
Java SDK
Web Services
Android SDK



Το προτεινόμενο εκπαιδευτικό υλικό εμφανίζεται παρακάτω:



“Understanding IP Addressing: Everything You Ever Wanted To Know”, ελεύθερα διαθέσιμο από http://holdenweb.com/static/docs/3comip.pdf
Linux Man Pages για τις εντολές ifconfig, iwconfig, iwlist, route
Linux Wireless Wiki: http://wireless.kernel.org/
Java Tutorials: http://docs.oracle.com/javase/tutorial/
Oracle Java Website:

http://www.oracle.com/technetwork/java/ ... index.html

Net Beans Tutorial for Web Services: http://netbeans.org/kb/trails/web.html
Android Training: http://developer.android.com/training/index.html
Android API Guides:

http://developer.android.com/guide/comp ... index.html

Android Emulator: http://developer.android.com/tools/help/emulator.html



Το λειτουργικό σύστημα αναφοράς θα είναι το Ubuntu Desktop 10.04 LTS (kernel 2.6.32-30) με Wireless Tools 3.0 και Oracle Java SE 7. Η βάση δεδομένων που θα χρειαστεί στο δεύτερο τμήμα θα είναι MySQL Community Server 5.5.27. Τέλος το λογισμικό στο κινητό θα υλοποιηθεί με χρήση Android 4.1.[1]



Η άσκηση θα παραδοθεί σε τρία τμήματα. Στο πρώτο τμήμα, θα παραδώσετε το λογισμικό που παρακολουθεί το δικτυακό περιβάλλον μιας συσκευής τύπου PC/Laptop. Το δεύτερο παραδοτέο θα είναι ένα κεντρικό σύστημα-αθροιστής που θα συγκεντρώνει και θα παρουσιάζει την πληροφορία που συλλέγουν οι επιμέρους συσκευές. Στο τρίτο τμήμα θα παραδώσετε το λογισμικό για Smartphones/PDAs.



ΒΑΣΙΚΕΣ ΚΛΑΣΕΙΣ PC/LAPTOP



Όνομα interface (π.χ. eth0, ath0)
Διεύθυνση MAC του interface
Διεύθυνση IP του interface
Μάσκα δικτύου του interface
Διεύθυνση δικτύου
Broadcast διεύθυνση
Default gateway
Μέγιστος ρυθμός μετάδοσης δεδομένων (kbps)
Τρέχον ρυθμός μετάδοσης δεδομένων (kbps)
Τρέχον ποσοστό καταναλισκόμενου εύρους γραμμής (%)
Ρυθμός σφαλμάτων (packet error rate)



Για κάθε interface της συσκευής θα πρέπει να διατηρείτε και περιοδικά να ανανεώνετε την πληροφορία που ορίζεται στη Λίστα Α (Εικόνα 1), Για όσα στοιχεία από αυτά είναι δυνατή η συγκέντρωση της πληροφορίας. Σε όσα δεν είναι δυνατή η συγκέντρωση της πληροφορίας (για διάφορους λόγους) να επιλέξετε κατάλληλη αναπαράσταση ώστε να αποτυπώνεται αυτό το γεγονός.

















Εικόνα 1: Λίστα Α



uoa@soekris8:~$ ifconfig

eth3 Link encap:Ethernet HWaddr 00:00:24:cd:7a:fb

inet addr:195.134.65.228 Bcast:195.134.65.255 Mask:255.255.255.192

inet6 addr: fe80::200:24ff:fecd:7afb/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:514330 errors:0 dropped:0 overruns:0 frame:0

TX packets:448202 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:115587836 (115.5 MB) TX bytes:120536773 (120.5 MB)

Interrupt:12 Base address:0x2300



lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:11 errors:0 dropped:0 overruns:0 frame:0

TX packets:11 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:828 (828.0 B) TX bytes:828 (828.0 B)

Οι πληροφορίες αυτές μπορούν να βρεθούν μέσω της εκτέλεσης των εντολών ifconfig, route καθώς και από την προσπέλαση των περιεχομένων του αρχείου /proc/net/dev.

















Εικόνα 2: Αποτέλεσμα εντολής ifconfig





uoa@soekris8:~$ cat /proc/net/dev

Inter-| Receive | Transmit

face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed

lo: 828 11 0 0 0 0 0 0 828 11 0 0 0 0 0 0

eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

eth1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

eth2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

eth3:115629909 514614 0 0 0 0 0 0 120543665 448253 0 0 0 0 0 0

wlan0:93187854 648612 0 0 0 0 0 0 117972726 485456 0 0 0 0 0 0











Εικόνα 3: Τα περιεχόμενα του /proc/net/dev

Για κάθε ασύρματο interface θα πρέπει να διατηρείτε και περιοδικά να ανανεώνετε επιπλέον την πληροφορία που ορίζεται στη Λίστα Β (Εικόνα 4):





Tην διεύθυνση MAC του σταθμού βάσης στον οποίο είναι συνδεδεμένο το interface (αν είναι)
Το ΕSSID του σταθμού βάσης στον οποίο είναι συνδεδεμένο το interface (αν είναι)
Το κανάλι στο οποίο έχει συνδεθεί το interface (αν έχει συνδεθεί)
Η κατάσταση λειτουργίας του Access Point που έχει συνδεθεί το interface (αν έχει συνδεθεί)
Η ισχύς εκπομπής του interface
Η ποιότητα της σύνδεσης
Η ισχύς του λαμβανομένου σήματος
Η ισχύς του θορύβου
Ο αριθμός των απορριφθέντων πακέτων





















Εικόνα 4: Λίστα Β[2]

Οι πληροφορίες αυτές μπορούν να βρεθούν μέσω της εκτέλεσης της εντολής iwconfig καθώς και από την προσπέλαση των περιεχομένων του αρχείου /proc/net/wireless.



uoa@soekris8:~$ iwconfig

lo no wireless extensions.



eth0 no wireless extensions.



eth1 no wireless extensions.



eth2 no wireless extensions.



eth3 no wireless extensions.



wlan0 IEEE 802.11abg Mode:Master Frequency:2.462 GHz Tx-Power=27 dBm

Retry long limit:7 RTS thr:off Fragment thr:off

Power Management:off



mom.wlan0 IEEE 802.11abg Mode:Master Frequency:2.462 GHz Tx-Power=27 dBm

Retry long limit:7 RTS thr:off Fragment thr:off

Power Management:off



























uoa@soekris8:~$ cat /proc/net/wireless

Inter-|sta-| Quality | Discarded packets | Missed | WE

face |tus | link level noise | nwid crypt frag retry misc | beacon | 22

wlan0: 000 0 0 0 0 0 0 0 0 0

mom.wal0: 000 0 0 0 0 0 0 0 0 0



Εικόνα 5: Αποτέλεσμα εντολής iwconfig











Εικόνα 6: Τα περιεχόμενα του /proc/net/wireless

Επιπλέον, δεδομένου ότι κάθε μηχάνημα θα παρακολουθεί το περιβάλλον θα πρέπει να αποθηκεύεται για κάθε Access Point της περιοχής η πληροφορία που ορίζεται στη Λίστα Γ (Εικόνα 7).





Tην διεύθυνση MAC
Το ΕSSID
Το κανάλι στο οποίο εκπέμπει
Η κατάσταση λειτουργίας του
Η ισχύς του λαμβανομένου σήματος















Εικόνα 7: Λίστα Γ



root@soekris8:~$ iwlist wlan0 scan

wlan0 Scan completed :

Cell 01 – Address: 00:1B:2F:D3:09:18

Channel:11

Frequency:2.462 GHz (Channel 11)

Quality=16/70 Signal level=-94 dBm

Encryption key:off

ESSID:”DIT-WLAN”

Bit Rates:1 Mb/s; 2Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s

11 Mb/s; 12 Mb/s 18 Mb/s

Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s

Mode:Master

Extra:tsf=00000298d48ba181

Extra: Last beacon: 2556ms ago

IE: Unkown: 00084449542D574C414E

IE: Unkown: 010882848B0C12961824

IE: Unkown: 03010B

IE: Unkown: 050400010100

IE: Unkown: 0706475220010D14

IE: Unkown: 2A0100

IE: Unkown: 32043048606C

IE: Unkown: DD0A0002BC01001B2FD30918









Οι πληροφορίες αυτές μπορούν να βρεθούν μέσω της εκτέλεσης της εντολής iwlist με τα κατάλληλα ορίσματα.



















Εικόνα 8: Αποτέλεσμα εντολής iwlist

Τα παραπάνω δεδομένα θα συγκεντρώνονται σε μια δομή η οποία θα περιέχει:

Το σύνολο των ενσύρματων και ασύρματων interfaces της συσκευής με τις αντίστοιχες πληροφορίες.
Για κάθε ασύρματο interface, τις επιπλέον πληροφορίες που παρουσιάστηκαν παραπάνω.
Μια λίστα με όλα τα Access Points που βρίσκονται στην περιοχή.

Η δομή δεν θα πρέπει να περιέχει διπλότυπα, συνεπώς θα πρέπει να σχεδιάσετε έναν απλό τρόπο απαλοιφής τους.

ΕΣΩΤΕΡΙΚΗ ΔΟΜΗ ΣΕ PC/LAPTOP

Η εφαρμογή σας θα αποτελείται από n+1 νήματα, όπου n ο αριθμός των interfaces που διαθέτει η συσκευή. Ειδικότερα:

1. Ένα νήμα αναλαμβάνει να ελέγχει διαρκώς για το είδος των interfaces που έχει η συσκευή. Σκοπός του είναι να παρακολουθεί την συσκευή για τυχόν διαγραφή ή εμφάνιση κάποιου καινούριου interface. Σε περίπτωση που κάτι τέτοιο συμβεί τότε σταματά/ξεκινά έναν αριθμό από τα νήματα που παρουσιάζονται παρακάτω. Η εφαρμογή θα πρέπει να μπορεί να αντιληφθεί αλλαγές τόσο σε επίπεδο υλισμικού (π.χ. νέo USB Wireless) όσο και σε επίπεδο λογισμικού (π.χ. δημιουργία νέου interface μέσω της εντολής ifconfig)

2. Για κάθε interface ξεκινά ένα νήμα που αναλαμβάνει να ελέγχει τις βασικές πληροφορίες του interface (Λίστα Α). Όπως αναφέρθηκε παραπάνω η πληροφορία μπορεί να βρεθεί μέσω της εκτέλεσης των εντολών ifconfig, route καθώς και από τα περιεχόμενα του αρχείου /proc/net/dev.

3. Αν το interface είναι ασύρματο, τότε το νήμα ελέγχει και τις επιπλέον πληροφορίες της Λίστας Β. Όπως αναφέρθηκε παραπάνω η πληροφορία μπορεί να βρεθεί μέσω της εκτέλεσης των εντολών iwconfig, route καθώς και από την προσπέλαση του περιεχομένου του αρχείου /proc/net/wireless.

4. Ένα ασύρματο interface επιλέγεται –τυχαία- ώστε να ελέγχει περιοδικά το ασύρματο περιβάλλον. Στόχος του είναι να ορίσει αντικείμενα της Λίστας Γ. Ιδανικά το interface αυτό δεν θα πρέπει να χρησιμοποιείται για κάτι άλλο, δηλαδή να μην είναι συνδεδεμένο κάπου, ούτε να το προσπελαύνουν άλλα νήματα (π.χ. του τύπου 2,3). Τούτο μπορεί να συμβεί αν η συσκευή έχει τουλάχιστον 2 ασύρματα interfaces. Σε διαφορετική περίπτωση τυπώνεται κατάλληλο διαγνωστικό μήνυμα και συνεχίζεται η εκτέλεση του προγράμματος με χρήση ενός interface για όλα. Όπως αναφέρθηκε παραπάνω η πληροφορία μπορεί να βρεθεί μέσω της εκτέλεσης της εντολής iwlist.

Διαχείριση Νημάτων

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

να εκκινήσει νέα νήματα αν εμφανιστούν νέα interfaces και
να τερματίσει νήματα αν ένα interface δεν υπάρχει πλέον.

Τα νήματα έχουν μεταβλητό sleep time το οποίο ορίζεται μέσω του παρακάτω αλγορίθμου. Θεωρούμε ότι η μεταβολή του sleep time ενός νήματος μοντελοποιείται μέσω μιας πεπερασμένης αλληλουχίας καταστάσεων. Η μετάβαση από μια κατάσταση σε μια άλλη εξαρτάται μόνο από την τρέχουσα κατάσταση και όχι από τις προηγούμενες (το σύστημα δεν έχει μνήμη). Το μοντέλο αυτό βασίζεται στις αλυσίδες Markov[3].

Κάθε κόμβος της αλυσίδας αντιστοιχεί σε κάποιο sleep-time. Η μετάπτωση από μια κατάσταση σε μια άλλη ορίζεται από την επιτυχία ή την αποτυχία του νήματος σε μια επανάληψη. Ορίζουμε μια επανάληψη ως επιτυχή αν το νήμα αντιληφθεί κάποιο γεγονός. Αντίθετα, ανεπιτυχή αν δεν βρεθεί κάτι. Σε περίπτωση που το νήμα εκτελέσει μια επιτυχή επανάληψη τότε μεταπίπτει από οποιαδήποτε κατάσταση Si στην κατάσταση Sk διαφορετικά μεταπίπτει στην Si-1.

Η μετάπτωση από την κατάσταση Si στην Si-1 μπορεί να γίνει με δύο τρόπους:

Σε περίπτωση που το νήμα εκτελέσει μια ανεπιτυχή επανάληψη
Σε περίπτωση που το νήμα εκτελέσει c ανεπιτυχείς επαναλήψεις, όπου c παράμετρος που δίνεται από property file.

Στην κατάσταση k το νήμα εκτελεί 1 μέτρηση ανά sleep time. Δηλαδή το sleep-time του ορίζεται ως sleep-time – T όπου Τ o χρόνος που διαρκεί η μέτρηση. Στην κατάσταση k-1 εκτελεί μια μέτρηση ανά 2 sleep time, δηλαδή εκτελεί sleep διάρκειας 2sleep-time – T. Γενικά, στην κατάσταση i το νήμα εκτελεί μία μέτρηση ανά k-i+1 sleep time.

Ορίζουμε ως επιτυχή μια επανάληψη αν το υπό εξέταση νήμα αντιληφθεί ένα από τα παρακάτω γεγονότα:

Αλλαγή στον αριθμό των interfaces
Αλλαγή στην MAC, ΙΡ, Default gateway, Subnet mask ενός interface
Αλλαγή στο καταναλισκόμενο εύρος πάνω από Χ%
Αλλαγή στο Packet Error Rate πάνω από Χ%
Αλλαγή της ισχύος εκπομπής
Αλλαγή του επιπέδου θορύβου
Αλλαγή στην ποιότητα του λαμβανόμενου σήματος
Αλλαγή στον αριθμό των ΑΡ που αντιλαμβάνεται

Αρχικά κάθε νήμα εκτελεί sleep για ένα συγκεκριμένο χρονικό διάστημα που δίνεται μέσω property file. Αν στην επανάληψη που θα εκτελέσει δεν αντιληφθεί κάποιο γεγονός τότε μεταπίπτει στην αμέσως επόμενη κατάσταση (μεταβάλει δηλαδή το sleep time του). Σε περίπτωση που αντιληφθεί κάποιο γεγονός επιστρέφει στο αρχικό sleep time.

Προφανώς για την περίπτωση ii (δηλαδή για c>1) η αδυναμία αντίληψης κάποιου γεγονότος θα πρέπει να λάβει χώρα c συνεχόμενες φορές (c παράμετρος που δίνεται μέσω property file)[4]. Επιπλέον παράμετροι που θα λαμβάνει το σύστημά σας είναι ο αριθμός καταστάσεων της αλυσίδας k καθώς και η ποσοστιαία μεταβολή Χ.

Τονίζεται ότι ο παραπάνω αλγόριθμος εφαρμόζεται για κάθε νήμα ξεχωριστά (για όλα τα νήματα). Τούτο οφείλεται στο γεγονός ότι ο ρυθμός εμφάνισης γεγονότων διαφέρει ως εκ τούτου διαφοροποιείται αντίστοιχα και ο χρόνος sleep. Είναι λογικό να μην περιμένουμε πολλές μεταβολές στον αριθμό των interfaces μιας συσκευής αλλά αντίθετα πολλές μεταβολές στο περιβάλλον της.

Σε περίπτωση που k=1 τότε η παραπάνω διαδικασία δεν εφαρμόζεται, δηλαδή τα νήματα έχουν σταθερό sleep time.

Το σύνολο της πληροφορίας θα αποστέλλεται περιοδικά (ανά sleep time milliseconds) στον αθροιστή. Το νήμα που θα αποστέλλει την πληροφορία δεν θα υλοποιεί τον αλγόριθμο μεταβλητού sleep time.































1 [main] INFO interfaces.Starter – Monitor initialized with the following properties:

76 [main] INFO interfaces.Starter – States:10

76 [main] INFO interfaces.Starter – TIMEOUT:5000

79 [main] INFO interfaces.Starter – LOG_FILE:monitor

79 [main] INFO interfaces.Starter – PORT:8080

1271 [Thread-0] INFO monitor.exec.AvailableInterfacesMonitor – State is:1. Internal Loop is 1 Timeout is:4999.0ms

5172 [Thread-1] ERROR monitor.exec.Monitor – Found 1 wireless interfaces. Successful execution requires at least 2. Execution will continue yet results are not guaranteed.

5200 [Thread-24] INFO monitor.exec.NetworkInterfaceMonitor – Starting monitor for interface:eth3

5211 [Thread-25] INFO monitor.exec.NetworkInterfaceMonitor – Starting monitor for interface:wlan0

7237 [Thread-24] INFO monitor.exec.NetworkInterfaceMonitor – eth3 -> State is:1. Internal Loop is:1. Timeout is:4998.0ms

7239 [Thread-25] INFO monitor.exec.NetworkInterfaceMonitor – wlan0 -> State is:1. Internal Loop is:1. Timeout is:4998.0ms

7546 [Thread-0] INFO monitor.exec.AvailableInterfacesMonitor – State is:1. Internal Loop is:2. Timeout is:4999.0ms

10296 [Thread-84] INFO monitor.exec.WirelessInterfaceMonitor – Starting monitor for interface wlan0 with network address 192.168.228.0 and network mask 255.255.255.0

10749 [Thread-26] INFO monitor.exec.WirelessEnvironmentScanner – wlan0 -> State is:1. Internal Loop is:1. Timeout is:4995.0ms

12991 [Thread-24] INFO context.NetworkIface – Event occurred on interface eth3. Connection Bandwidth percentage is now zero.

12991 [Thread-24] INFO monitor.exec.NetworkInterfaceMonitor – eth3 -> State is:1. Internal Loop is:1. Timeout is: 4998.0ms

12998 [Thread-25] INFO context.NetworkIface – Event occurred on interface wlan0. Connection bandwidth percentage is now zero.

13007 [Thread-25] INFO monitor.exec.NetworkInterfaceMonitor – wlan0 -> State is:1. Internal Loop is:1. Timeout is: 4998.0ms

13138 [Thread-0] INFO monitor.exec.AvailableInterfacesMonitor – State is:1. Internal Loop is:3. Timeout is:4999.0ms

16976 [Thread-84] INFO monitor.exec.WirelessInterfaceMonitor – wlan0 -> State is:1. Internal Loop is:1. Timeout is:4993.0ms

18715 [Thread-25] INFO monitor.exec.NetworkInterfaceMonitor – wlan0 -> State is:1. Internal Loop is:2. Timeout is:4998.0ms

18789 [Thread-24] INFO monitor.exec.NetworkInterfaceMonitor – eth3 -> State is:1. Internal Loop is:2. Timeout is:4998.0ms

18806 [Thread-0] INFO monitor.exec.AvailableInterfacesMonitor – State is:1. Internal Loop is:4. Timeout is:4999.0ms

19559 [Thread-26] INFO monitor.exec.WirelessEnvironmentScanner – wlan0 -> State is:1. Internal Loop is:2. Timeout is:4995.0ms

24313 [Thread-25] INFO monitor.exec.NetworkInterfaceMonitor – wlan0 -> State is:1. Internal Loop is:3. Timeout is:4998.0ms

24328 [Thread-0] INFO monitor.exec.AvailableInterfacesMonitor – State is:1. Internal Loop is:5. Timeout is:4999.0ms

24375 [Thread-24] INFO monitor.exec.NetworkInterfaceMonitor – eth3 -> State is:1. Internal Loop is:3. Timeout is:4998.0ms





































Εικόνα 9: Τυπικό παράδειγμα εκτέλεσης του προγράμματος


ΣΥΣΤΗΜΑ ΑΘΡΟΙΣΤΗΣ

Το σύστημα αθροιστής θα υλοποιεί ένα Web Service το οποίο θα λαμβάνει περιοδικά πληροφορία από τα PC/Laptops, θα τα αποθηκεύει σε μια βάση δεδομένων και θα τα παρουσιάζει σε αντίστοιχο γραφικό περιβάλλον.

Η διεπαφή που θα υλοποιεί θα πρέπει να είναι αντίστοιχη της παρακάτω:

public void setMonitorData(String device, MonitorData MD)

όπου device το όνομα της συσκευής και MonitorData ένα αντικείμενο που περιέχει τα δεδομένα της συσκευής (όπως αυτά έχουν συλλεχθεί στα προηγούμενα βήματα). Τα δεδομένα λαμβάνονται και αποθηκεύονται σε μια βάση δεδομένων το σχήμα της οποίας θα πρέπει να ακολουθεί την δομή της MonitorData, κατάλληλα τροποποιημένη ώστε να ικανοποιεί τουλάχιστον τις απαιτήσεις της 2ης Κανονικής Μορφής (2ΝF).

Κάθε φορά που εισάγεται ή ανανεώνεται πληροφορία στην βάση θα πρέπει να διατηρείται και ο χρόνος που έλαβε χώρα η πράξη. Εφόσον παρέλθει διάστημα Τ από την τελευταία αποστολή του μηνύματος τότε θα πρέπει να διαγράφεται από την βάση. Το Τ θα ορίζεται σε property file από τον χρήστη.

Η πληροφορία θα παρουσιάζεται στον χρήστη μέσω κατάλληλης γραφικής διεπαφής. Στην διεπαφή αυτή ο χρήστης θα μπορεί να επιλέξει μια από τις διαθέσιμες συσκευές (ουσιαστικά τις συσκευές που έχουν αποστείλει πληροφορία στον αθροιστή) και για την συσκευή αυτή να δει τα διαθέσιμα interfaces καθώς και τις αντίστοιχες μετρήσεις τους. Ουσιαστικά ζητείται οπτικοποίηση της MonitorData δομής που είναι αποθηκευμένη στην βάση και αντιστοιχεί στην επιλεγμένη συσκευή. Η ενημέρωση της βάσης θα πρέπει να αντικατοπτρίζεται στο γραφικό περιβάλλον.

Ο αθροιστής θα υλοποιεί και δεύτερη διεπαφή που θα επιτρέπει να επικοινωνήσουν τα κινητά μαζί του και να στείλουν την πληροφορία που έχουν συλλέξει. Η διεπαφή αυτή θα πρέπει να είναι αντίστοιχη της παρακάτω:

public void setTerminalData(String device, TerminalData data)

όπου device είναι το αναγνωριστικό της συσκευής (ΙΜΕΙ) ενώ TerminalData μια δομή που αποθηκεύει τις μετρήσεις ενός κινητού. Η διαχείριση των δεδομένων ακολουθεί την ίδια λογική με παραπάνω. Κάθε φορά που εισάγεται ή ανανεώνεται πληροφορία στην βάση θα πρέπει να διατηρείται και ο χρόνος που έλαβε χώρα η πράξη. Εφόσον παρέλθει διάστημα Τ από την τελευταία αποστολή του μηνύματος τότε θα πρέπει να διαγράφεται από την βάση. Το Τ θα είναι κοινό με την προηγούμενη περίπτωση.

Αντίστοιχα, στο γραφικό περιβάλλον θα υπάρχει η δυνατότητα εμφάνισης των στοιχείων από τις συσκευές. Δηλαδή, επιλέγοντας ένα από τα διαθέσιμα ΙΜΕΙ, ο χρήστης θα μπορεί να δεί τα δεδομένα που έχει αποστείλει η συσκευή.

Ο αθροιστής δέχεται αιτήσεις σε όλα τα interfaces του μηχανήματος που εκτελείται. Έχει ιδιαίτερη σημασία η εφαρμογή σας να μπορεί να εκτελείται σε οποιοδήποτε περιβάλλον. Δηλαδή το όνομα της βάσης, η ΙΡ της, οι κωδικοί της σύνδεσης κ.λ.π. θα πρέπει να είναι παράμετροι εισόδου στο σύστημα.

Αντίστοιχα και τα στοιχεία του Web Service θα πρέπει να είναι παράμετροι στο σύστημα.

Ο σχεδιασμός της βάσης πρέπει να γίνει προσεκτικά ώστε να καλυφθούν περιπτώσεις επικαλύψεων. Δύο συσκευές είναι δυνατόν να αντιλαμβάνονται τα ίδια δίκτυα, ως εκ τούτου να αποστείλουν την ίδια πληροφορία (Λίστα Γ) στον αθροιστή.

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



ΒΑΣΙΚΕΣ ΚΛΑΣΕΙΣ SMARTPHONE/PDA

Σκοπός της εφαρμογής στο Smartphone / PDA αποτελεί η περιοδική παρακολούθηση του στίγματος (GPS συντεταγμένες) και της μπαταρίας της συσκευής και η επικοινωνία με το σύστημα άθροισης για την αποθήκευση της πληροφορίας στη βάση δεδομένων.

Στα πλαίσια του τρίτου τμήματος της άσκησης θα υλοποιηθεί:

Το λογισμικό παρακολούθησης του στίγματος (GPS συντεταγμένες) και της μπαταρίας της συσκευής. Το λογισμικό θα υλοποιηθεί με χρήση της τεχνολογίας Android SDK.
Η γραφική διεπαφή χρήστη (GUI) της συσκευής για την προσβολή των πληροφοριών στο χρήστη. Οι πληροφορίες που θα παρουσιάζονται στο χρήστη θα είναι:
Πληροφορίες σχετικές με το υλικό και το λογισμικό της συσκευή: μοντέλο, κατασκευαστής, έκδοση SDK.
Πληροφορίες σχετικές με το στίγμα: γεωγραφικό μήκος, γεωγραφικό πλάτος, ύψος (αν υποστηρίζεται από τη συσκευή)
Πληροφορίες σχετικές με τη μπαταρία: το επίπεδο της μπαταρίας και την κατάσταση φόρτισης.

Το GUI θα υλοποιηθεί με χρήση της τεχνολογίας Android SDK.

Το λογισμικό επικοινωνίας και μετάδοσης της πληροφορίας μεταξύ της συσκευής και του συστήματος αθροιστή. Για τη μετάδοση της πληροφορίας θα χρησιμοποιηθούν τα Web Services που παρέχει το σύστημα αθροιστή και συγκεκριμένα η διεπαφή setTerminalData. Για την υλοποίηση θα χρησιμοποιηθεί συνδυασμός των τεχνολογιών Android SDK και Java SDK.

Για την αποσφαλμάτωση και τον έλεγχο λειτουργίας του λογισμικού που θα αναπτυχθεί σε Android SDK θα χρησιμοποιηθεί ο εξομοιωτής Smartphone που περιλαμβάνεται στο πακέτο του Android SDK.

Προαιρετικά, και χωρίς βαθμολογικό κέρδος, μπορείτε να επεκτείνετε την παραπάνω εφαρμογή ώστε να επιτυγχάνει ταυτόσημη λειτουργικότητα με την εφαρμογή του πρώτου παραδοτέου. Δηλαδή, το κινητό θα είναι σε θέση να παρακολουθεί το ασύρματο περιβάλλον και να αποστέλλει τα δεδομένα του στον αθροιστή. Σημειώνεται ότι για την ορθή υλοποίηση της επέκτασης αυτής απαιτείται συσκευή Andoid (η εν λόγω λειτουργικότητα δεν υποστηρίζεται από τον προσομοιωτή).







ΟΔΗΓΙΕΣ

Η άσκηση θα παραδοθεί σε 3 επιμέρους παραδοτέα. Ιδανικά, με την παράδοση του 3ου παραδοτέου θα πρέπει να υπάρχει ένα πλήρες λειτουργικό σύστημα παρακολούθησης του ασύρματου περιβάλλοντος μιας περιοχής και διοχέτευσης της πληροφορίας σε αιτούντες χρήστες. Το σύστημα θα πρέπει να είναι σε θέση να διασυνδέει ν κινητά και μ PC/Laptops με έναν αθροιστή.

Παραδοτέο 1 (25-11-2012, μεσάνυχτα μέσω eclass):

Το πρώτο παραδοτέο θα περιέχει το σύστημα παρακολούθησης σε PC/Laptop. Θα παραδώσετε μέσω e-class τον κώδικα, αναλυτικές σημειώσεις για την δομή του καθώς και τους ελέγχους που κάνατε για να επιβεβαιώσετε την ορθότητά του.

Στο πρώτο παραδοτέο δεν απαιτείται η πλήρης υλοποίηση της διεπαφής με τον αθροιστή. Απαιτείται μόνο η δημιουργία του νήματος που θα αποστέλλει το εν λόγω μήνυμα.

Παραδοτέο 2 (13-01-2013, μεσάνυχτα μέσω eclass):

Το δεύτερο παραδοτέο θα περιέχει το σύστημα του αθροιστή. Θα παραδώσετε μέσω e-class τον κώδικα, αναλυτικές σημειώσεις για την δομή του καθώς και τους ελέγχους που κάνατε για να επιβεβαιώσετε την ορθότητά του.

Παραδοτέο 3 (03-02-2013, μεσάνυχτα μέσω eclass):

Το τρίτο παραδοτέο θα περιέχει το πλήρες λειτουργικό σύστημα. Χρησιμοποιώντας τα δύο πρώτα παραδοτέα θα δομήσετε την Android εφαρμογή και το πλήρες σύστημα. Θα παραδώσετε μέσω e-class τον κώδικα, αναλυτικές σημειώσεις για την δομή του καθώς και τους ελέγχους που κάνατε για να επιβεβαιώσετε την ορθότητά του.





ΔΙΕΥΚΡΥΝΙΣΕΙΣ:

Κάθε παραδοτέο μπορεί να υλοποιηθεί από ομάδα των 3 ατόμων (μέγιστο).
Οι ημερομηνίες παράδοσης είναι ανελαστικές.
Κατόπιν της παράδοσης, θα ακολουθεί εξέταση στα εργαστήρια όπου θα ελέγχεται η ορθότητα της υλοποίησης και θα ζητείται η συγγραφή κώδικα από όλα τα μέλη της ομάδας. Θα πρέπει να είστε σε θέση να τεκμηριώσετε πλήρως τις επιλογές σας και την υλοποίησή σας τόσο θεωρητικά όσο και πρακτικά.
Η βαθμολογία σας προκύπτει τόσο από την λειτουργικότητα της εφαρμογής όσο και από την σχεδίασή της. Συνεπώς, δύο υλοποιήσεις που παρέχουν την ίδια λειτουργικότητα βαθμολογούνται διαφορετικά, ανάλογα πάντα με την ακολουθούμενη σχεδιαστική προσέγγιση.
Δύο εβδομάδες πριν την παράδοση της εργασίας θα ανακοινώνονται αναλυτικές οδηγίες για την δομή του κειμένου που θα συνοδεύει το παραδοτέο. Κατ’ ελάχιστο το κείμενο πρέπει να περιέχει τα παρακάτω:

Περιγραφή των κλάσεων (Classes) που υλοποιήσατε και ένα σχεδιάγραμμα που δείχνει πως αυτές αλληλεπιδρούν (Class Diagram).
Για κάθε κλάση να φτιάξετε έναν πίνακα που αναφέρει τις μεθόδους και να έχετε σύντομη περιγραφή (μία ή δύο προτάσεις) του ρόλου(/λειτουργία) της κάθε μεθόδου.
Σύντομη περιγραφή των δοκιμών/tests που κάνατε.
Ενσωμάτωση του παραδοτέου με το αποτέλεσμα της προηγούμενης εργασίας και εκ νέου διεξαγωγή ελέγχων.

Θα διενεργηθούν δύο γραπτές εξετάσεις, Φεβρουάριο και Σεπτέμβριο. Συμμετοχή σε αυτές θα έχουν μόνο όσοι επιτύχουν στην άσκηση. Η γραπτή εξέταση θα είναι pass/fail. Οι επιτυχόντες στην εξέταση θα λάβουν τον συνολικό βαθμό της άσκησης σαν βαθμό του μαθήματος.
Η βαθμολογία ορίζεται ως εξής: 0.35*1ο παραδοτέο + 0.25*2ο παραδοτέο + 0.25*3ο παραδοτέο + 0.15*Συνολική λειτουργική έκδοση

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

Για την επίλυση αποριών θα δημιουργηθεί λίστα στην οποία καλείστε όλοι να εγγραφείτε. Επίλυση αποριών θα γίνεται μόνο μέσω της λίστας ή στα πλαίσια των διαλέξεων.

[1] Οποιαδήποτε άλλη έκδοση λειτουργικού συστήματος, wireless tools, jdk ή Mysql είναι αποδεκτή. Δεδομένων όμως των διαφορών που ενδεχομένως έχουν (π.χ. Ubuntu 12.04 vs Ubuntu 10.04) πλήρης υποστήριξη παρέχεται για τα προαναφερθέντα.

[2] Πολλές κάρτες επιστρέφουν την συχνότητα λειτουργίας (GHz). Η αντιστοιχία συχνοτήτων-καναλιών καθώς και οι επικαλύψεις τους εμφανίζονται εδώ: http://www.moonblinkwifi.com/2point4freq.cfm

[3] http://en.wikipedia.org/wiki/Markov_chain

[4] Προσοχή, το σύστημα δεν έχει μνήμη, πράγμα που σημαίνει ότι πρέπει να τροποποιήσετε κατάλληλα τον αλγόριθμο.
Σχόλια:
Ημερομηνία έναρξης: 08-10-2012 12:11:54
Προθεσμία υποβολής: 08-11-2012 12:01:00
(απομένουν 12 ημέρες 22 ώρες 16 λεπτά)
Τύπος εργασίας: Ομαδική
Pc1
3 Intel Core i5-3317U CPU @ 1.70GHz ‖ RAM 5856 MiB ‖ ASUS S56CA
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 0a)
Pc 2
3 Intel Core2 CPU E8400 3.00GHz ‖ RAM 3962 MiB ‖ FOXCONN P45A01
4 ATI RV730XT [Radeon HD 4670] [1002:9490]
5 eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 01)
Άβαταρ μέλους
adem1
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 733
Εγγραφή: 27 Οκτ 2011, 20:17
IRC: adem1
Εκτύπωση


  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron