• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 17, 2025, 01:28:28 am

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 17, 2025, 01:28:28 am

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Ισραήλ - Ιράν: Πόλεμος στ...
by Yamal
[June 16, 2025, 23:46:31 pm]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[June 16, 2025, 22:46:54 pm]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[June 16, 2025, 19:49:00 pm]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[June 16, 2025, 16:56:56 pm]

[Εφ.Θερμοδυναμική] Γενικέ...
by Λαμπτήρας
[June 16, 2025, 15:55:08 pm]

[Αρχές Οικονομίας] Να επι...
by _Trob
[June 16, 2025, 13:28:21 pm]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[June 16, 2025, 12:13:45 pm]

Αποτελέσματα Εξεταστικής ...
by Nikos_313
[June 16, 2025, 12:01:53 pm]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by George_RT
[June 16, 2025, 10:22:18 am]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]

Αντικατάστασης πυκνωτή σε...
by nmpampal
[June 15, 2025, 16:25:56 pm]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]

Ρυθμίσεις Θεμάτων της Ανώ...
by el mariachi
[June 14, 2025, 11:56:45 am]

Πότε θα βγει το μάθημα; -...
by Nikos_313
[June 14, 2025, 10:00:55 am]

Αρχείο Ανακοινώσεων [Arch...
by Nikos_313
[June 14, 2025, 09:58:14 am]

Αλέξης Τσίπρας, η επιστρο...
by Yamal
[June 14, 2025, 04:42:23 am]

Έναρξη Δηλώσεων Συμμετοχή...
by IEEE SB
[June 14, 2025, 00:10:19 am]
Στατιστικά
Members
Total Members: 9960
Latest: valco08
Stats
Total Posts: 1426678
Total Topics: 31710
Online Today: 164
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 34
Guests: 129
Total: 163
Athinaaz
vaggelisx
Yamal
κοτζακ
stavrosk
lasef
nasos
Saint_GR
Mr Watson
Loudis1
eed
thegreekbaron
thomasdt
thathas12
iliaspapam
ArchieHadCells
ValKar
vagelismo
ilias123
dimitris585
μιλτοςμ
Christina_R
Stathiss
zgeorgitz
charbel
myrtosa
christina02
anon
kokkinosgior
bougatsa
george14
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Επίσημη ενημέρωση για Αντιστοίχηση Μαθημάτων ΝΠΣ με ΠΠΣ και η συζήτηση στο forum.
THMMY.gr > Forum > Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών  > 8ο Εξάμηνο > Ενσωματωμένα Συστήματα Πραγματικού Χρόνου > [Eνσωματωμένα] Εργασίες 2019
0 Members and 1 Guest are viewing this topic.
Pages: 1 ... 4 5 [6] 7 8 ... 10 Go Down Print
Author Topic: [Eνσωματωμένα] Εργασίες 2019  (Read 17430 times)
mano_lee
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 151


meh'


View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #75 on: July 15, 2019, 13:36:09 pm »

Quote from: cvkagias on July 12, 2019, 17:40:42 pm
Εγώ ακόμα δεν έχω καταφέρει να συνδεθώ με το raspberry ούτε με τον ένα ούτε με τον άλλο τρόπο. Από ότι έχω δει σε forum, όλοι λένε ότι για να σετάρω την static IP, δεν πειράζω το interfaces αλλά το dhcpcd.conf αρχείο. Κάποιο tip;


Σύνδεση μέσω καλωδίου

1)
Το αρχείο /etc/network/interfaces (του PC σου), θα πρέπει να μοιάζει κάπως έτσι:

Code:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

iface usb_port_network inet static
  address 192.168.0.5
  netmask 255.255.255.0
  gateway 192.168.0.1

Όπου address θα βάλεις την IP που θες να έχει το PC σου και όπου gateway είναι η IP του pi σου (την IP του pi θα την αλλάξεις μέσα απ το /etc/network/interfaces του pi αργότερα, οποτε θα την αλλαξεις και απο εδώ μετά ώστε να είναι η ίδια, γιατί η 192.168.0.1 είναι αυτή που έχει by default).

Όπου usb_port_network θα βάλεις την καινούρια σύνδεση που φαίνεται απο την εντολη iwconfig όταν συνδέεις το καλώδιο σε ένα usb port.

2) Τσεκάρεις τα δίκτυα στα οποία είναι συνδεδεμένα το pc σου. Αν είναι δείχνει να είναι συνδεδεμένο σε ένα "Wired Connection 1" κάνεις disconnect.

3) Κάνεις sudo /etc/init.d/networking restart

Τότε πρέπει να δείξει ότι συνδέθηκε στο usb_port_network που έβαλες στο /etc/network/interfaces του PC σου.

4) Κάνεις ssh root@192.168.0.1

Γενικά, δεν είναι δύσκολο, απλα τρώει κάτι κολλήματα συνέχεια και πρέπει να τα λύνεις με restart του network manager. Οποτε αν ολα αυτα δεν πετυχαινουν κανε και ένα sudo service network-manager restart και μετά κάνε και τα άλλα.

Επίσης, αν συνδέσεις το usb Και σου βγάζει στα δίκτυα "Device not managed" κατά πάσα πιθανότητα δε θα δουλέψει. Οποτε απλά βάλτο σε άλλο port και λογικά εκεί δε θα το βγάζει.

Σύνδεση μέσω wifi

1) Κανεις add new connection τύπου Wifi (απ το edit connections). Βάζεις σαν mode το Ad-hoc. Πας στην καρτέλα για IPv4 και βάζεις με τη σειρά "10.0.0.5", "255.255.255.0", "10.0.0.1". Πάλι εδώ, το πρώτο θα είναι η IP που θα επιλέξεις για το PC σου, και το τελευταίο το default του pi σου (το οποίο θα το αλλάξεις αργότερα στη μορφή που θέλει ο πιτσιανης, με το ΑΕΜ).

2) Συνδέεσαι στο δίκτυο που δημιούργησες.

3) Αφού συνδεθεί, κάνεις ssh root@10.0.0.1
« Last Edit: September 06, 2019, 13:21:10 pm by mano_lee » Logged

Allah allah allah will pray for you
_init
Καταξιωμένος/Καταξιωμένη
***
Posts: 116



View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #76 on: July 15, 2019, 18:28:33 pm »

Quote from: feugatos_# on July 12, 2019, 16:44:14 pm
Παιδιά επειδή δεν το έπιασα και πολύ, μπορεί κάποιος που το κατάφερε να εξηγήσει πως υποτίθεται ότι πρέπει να γίνει η επικοινωνία μεταξύ των συσκευών;

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

Μετά, απλά θα πρέπει να τα βάλεις να επικοινωνούν στην ίδια port στο server αρχείο σου (port 2288).
Logged
feugatos_#
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Posts: 1063

.


View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #77 on: July 15, 2019, 18:35:46 pm »

Quote from: _init on July 15, 2019, 18:28:33 pm
Η κάθε συσκευή δημιουργεί ένα adhoc δίκτυο. Τα δίκτυα αυτά θα έχουν όλα το ίδιο όνομα και τον ίδιο κωδικό (τα προεπιλεγμένα), οπότε θα είναι σα να συνδέονται όλες οι συσκεύες στο ίδιο δίκτο.
Με λίγα λόγια, δε χρειάζετα να κάνεις κάτι, απλά να φέρεις τις συσκεύες σε απόσταση τέτοια ώστε τα δυο δίκτυα να είναι στην ίδια εμβέλεια και θα συνδεθούν αυτόματα.

Μετά, απλά θα πρέπει να τα βάλεις να επικοινωνούν στην ίδια port στο server αρχείο σου (port 2288).
Ευχαριστώ πολύ για την απάντηση. Έχω προσπαθήσει αυτό που περιγράφεις απλά μάλλον αντιμετωπίζω δυσκολίες γιατί χρησιμοποιώ zsun
Logged
feugatos_#
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Posts: 1063

.


View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #78 on: July 15, 2019, 18:37:31 pm »

Υπάρχει κάποιος συνάδελφος που κατάφερε να στήσει adhoc δίκτυο με zsun και να συνδεθεί μέσω του υπολογιστή ώστε να το συζητήσουμε;
Logged
_init
Καταξιωμένος/Καταξιωμένη
***
Posts: 116



View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #79 on: July 16, 2019, 16:19:58 pm »

Quote from: Μπουγάτσας on June 26, 2019, 18:38:16 pm
Απάντηση Φλώρου
Θα στείλετε πολλαπλά μηνύματα με το format που καθορίσαμε στην εκφώνηση.
Δεν θα στείλετε όλη την λίστα με τα μηνύματα με ένα send, αλλά με πολλαπλά (ένα για κάθε μήνυμα).
Στο τέλος της λίστας θα κλείσετε το socket.


Δηλαδή, όσο είναι εντός εμβέλειας δε θα μείνει ανοιχτό το socket σε περίπτωση που σταλθούν νέα μηνύματα?
Logged
Florence
Καταξιωμένος/Καταξιωμένη
***
Posts: 172


View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #80 on: July 22, 2019, 14:49:31 pm »

Μετα την εγγραφη της εικονας στην καρτα SD, αναφερεται στο manual ότι επιστρεφεται ο αριθμος των block στη μορφη:

xxx+0 records in
yyy+0 records out
yyyyyyyyyy bytes (yyy kB, yyy KiB) copied, 0.00144744 s, 283 MB/s

Εγω μετα την εγγραφη παιρνω
414+1 records in
414+1 records out

Παρολα αυτα οταν ελεγχω αν η εικονα εγγραφηκε σωστα παιρνω ότι οι 2 εικονες ειναι ταυτοσημες. Θα πρεπε να ανησυχω επειδη κατα την εγγραφη επιστρεφεται +1 και οχι +0 ? Ειχε καποιος αλλος αυτες τις επιστρεφομενες τιμες?
Logged
geormich
Νεούλης/Νεούλα
*
Posts: 26


View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #81 on: August 14, 2019, 02:44:15 am »

Quote from: Apostolof on June 24, 2019, 23:14:45 pm
Εγώ έκανα δύο συναρτήσεις στον buffer, μία serialize που παίρνει όλο τον buffer και τον κάνει ένα μεγάλο string με συγκεκριμένο format και μία deserialize που παίρνει ένα string (ελπίζοντας ότι θα έχει το σωστό format) και το μεταφράζει σε στοιχεία του buffer. Έτσι ο ένας στέλνει το string της serialize και ο άλλος που το παίρνει κάνει deserialize.

Για να ανακαλύψω τις συσκευές στο δίκτυο και να βρω τις IP, αυτή τη στιγμή, κάνω ένα broadcast ping και μετά χρησιμοποιώ το arp cache. Έπειτα για να δω αν κάθε μία από τις συσκευές που ανακάλυψα είναι online κάνω ξεχωριστά ping τη κάθε μία. Αυτό όμως παίρνει αρκετό χρόνο. Έχετε βρει κάποιο καλύτερο τρόπο; Εσείς τι κάνετε;

Επίσης, παρατήρησα ότι τα timestamps του κάθε node (έχω 2 Rpi και τεστάρω) είναι διαφορετικά ακόμα και για πολύ κοντινές χρονικά καταγραφές, κάνετε κάποιο clock synchronization για να το διορθώσετε; Αν το έχει ψάξει κανείς ας στείλει links/υλικό.


Apostolof καλα ολα αυτα που λες..Αλλα.....Ερωτήσεις:
1.εκανες ενα αρχειο και ειναι ολα τα ενσωματωμενα servers ή υπάρχουν και clients και servers?

Πιο συγκεκριμένα απο αυτο που λεει δεν καταλαβαινεις αν θα ειναι a.polloi clients polloi servers   b.1 server πολλοι clients η c.ολοι servers-clients....Πώς το έκανες εσύ?Σε περίπτωση που είναι όλοι servers-clients όταν βλέπουν κάτι συνδεδεμένο και οι 2 αποστελουν και λαμβανουν μηνυματα αναλογα με το ΑΕΜ και επειτα και οι 2 το αποθηκευουν στη λιστα τους....

2.Αυτο με το serialize deserialize ειναι απαραιτητο??δεν μπορουμε να μετατρεψουμε τους ints σε ενα string και να τα ενσωματωσουμε ολα σε ενα string για να τα στειλουμε ως μηνυματα?

3.Μπορείς να πεις τιποτα παραπανω για το πως ανιχνευεις τις συσκευες? Tongue (ια να ανακαλύψω τις συσκευές στο δίκτυο και να βρω τις IP, αυτή τη στιγμή, κάνω ένα broadcast ping και μετά χρησιμοποιώ το arp cache. Έπειτα για να δω αν κάθε μία από τις συσκευές που ανακάλυψα είναι online κάνω ξεχωριστά ping τη κάθε μία.) κανα link Tongue

4.Τα μηνυματα τα εχεις αποθηκευσει σε ουρα???
« Last Edit: August 14, 2019, 04:23:06 am by geormich » Logged
_init
Καταξιωμένος/Καταξιωμένη
***
Posts: 116



View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #82 on: August 14, 2019, 13:20:40 pm »

Quote from: geormich on August 14, 2019, 02:44:15 am

Πιο συγκεκριμένα απο αυτο που λεει δεν καταλαβαινεις αν θα ειναι a.polloi clients polloi servers   b.1 server πολλοι clients η c.ολοι servers-clients....Πώς το έκανες εσύ?Σε περίπτωση που είναι όλοι servers-clients όταν βλέπουν κάτι συνδεδεμένο και οι 2 αποστελουν και λαμβανουν μηνυματα αναλογα με το ΑΕΜ και επειτα και οι 2 το αποθηκευουν στη λιστα τους....


είναι p2p σύστημα οπότε όλα τα nodes είναι και client και server μαζί. Σε ένα tcp socket μπορείς και να στέλνεις και να λαμβάνεις ταυτόχρονα όποτε εφόσον κάνεις establish το connection μεταξύ των δύο nodes δεν σε ενδιαφέρει ποιος είναι ο client και ποιος είναι ο server.
επίσης, δεν πρέπει να στέλνεις και να λαμβάνεις μόνο τα μηνύματα που αφορούν στο ΑΕΜ σου αλλά όλα τα μηνύματα που έχει το node στο buffer του.

Quote from: geormich on August 14, 2019, 02:44:15 am
2.Αυτο με το serialize deserialize ειναι απαραιτητο??δεν μπορουμε να μετατρεψουμε τους ints σε ενα string και να τα ενσωματωσουμε ολα σε ενα string για να τα στειλουμε ως μηνυματα?

Δεν τίθεται θέμα serialize-deserialize. Στέλνεις κάθε μήνυμα ξεχωριστά (σαν string), όχι όλο το buffer μαζί.

Quote from: geormich on August 14, 2019, 02:44:15 am
3.Μπορείς να πεις τιποτα παραπανω για το πως ανιχνευεις τις συσκευες? Tongue (ια να ανακαλύψω τις συσκευές στο δίκτυο και να βρω τις IP, αυτή τη στιγμή, κάνω ένα broadcast ping και μετά χρησιμοποιώ το arp cache. Έπειτα για να δω αν κάθε μία από τις συσκευές που ανακάλυψα είναι online κάνω ξεχωριστά ping τη κάθε μία.) κανα link Tongue

Θα δίνετε λίστα με τα ΑΕΜ, οπότε θα μπορείς να φτιάξεις την ip του κάθε node στο δίκτυο και μετά θα προσπαθείς να κάνεις connect() σε κάθε node απο τη λίστα που θα έχεις φτιάξει.

Quote from: geormich on August 14, 2019, 02:44:15 am
4.Τα μηνυματα τα εχεις αποθηκευσει σε ουρα???

Η εκφώνηση λέει ότι τα μηνύματα αποθηκεύονται σε ring buffer. ενδεικτικά.



« Last Edit: August 16, 2019, 12:59:01 pm by _init » Logged
Apostolof
WebSlave
Αbsolute ΤΗΜΜΥ.gr
***
Gender: Male
Posts: 2660


Κεραυνοί, φωτιές, ece


View Profile WWW
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #83 on: August 14, 2019, 18:33:34 pm »

+1 σε ό,τι είπε ο _init. Είχα κάνει το ποστ πριν δώσει κάποιες επεξηγήσεις και αλλάξει την εκφώνηση οπότε πολλά από όσα έκανα ήταν άχρηστα Sad
Logged

All these moments will be lost in time, like tears in rain.
In the meanwhile, life goal.
geormich
Νεούλης/Νεούλα
*
Posts: 26


View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #84 on: August 15, 2019, 05:59:11 am »

Quote from: _init on August 14, 2019, 13:20:40 pm
είναι p2p σύστημα οπότε όλα τα nodes είναι και client και server μαζί. Σε ένα tcp socket μπορείς και να στέλνεις και να λαμβάνεις ταυτόχρονα όποτε εφόσον κάνεις establish το connection μεταξύ των δύο nodes δεν σε ενδιαφέρει ποιος είναι ο client και ποιος είναι ο server.
επίσης, δεν πρέπει να στέλνεις και να λαμβάνεις μόνο τα μηνύματα που αφορούν στο ΑΕΜ σου αλλά όλα τα μηνύματα που έχει το node στο buffer του.

Δεν τίθεται θέμα serialize-deserialize. Στέλνεις κάθε μήνυμα ξεχωριστά (σαν string), όχι όλο το buffer μαζί.

Θα δίνετε λίστα με τα ΑΕΜ, οπότε θα μπορείς να φτιάξεις την ip του κάθε node στο δίκτυο και μετά θα προσπαθείς να κάνεις connect() σε κάθε node απο τη λίστα που θα έχεις φτιάξει.

Η εκφώνηση λέει ότι τα μηνύματα αποθηκεύονται σε ring buffer.
ενδεικτικά: https://embedjournal.com/implementing-circular-buffer-embedded-c/.


ΟΚ..Απλά έχω κάποιες τελευταίες ερωτήσεις πάνω στις απαντήσεις σου..

ΝΟ1 ερώτηση..Στην πρώτη απάντηση που έδοσες για το P2P εννοείς

α.ότι θα έχω 1 τελικό αρχείο(server-client ας το πούμε) με 2 threads μέσα όπου αυτό περιλαμβάνει ουσιαστικά για κάθε thread 1 connection και 1 socket..Δηλαδή καποιο socket πρεπει να ειναι σε standby  
και καποιο να παροσπαθει να κανει connection..Ή αλλιώς ένα socket για να περιμένει για αίτημα connection για αποστολή ή λήψη μηνύματος(λειτουργία server) και ένα socket για να κάνει αίτημα για αποστολή ή λήψη μηνύματος(λειτουργία client)?

β.2 αρχεία ένα server και ένα client με 1 thread το καθένα μέσα

γ.1 αρχείο με ένα thread μέσα????

Εγώ αν το κάνω με 1 αρχείο ξέρω να το κάνω μόνο με 2 threads..Υπάρχει και άλλος τρόπος??Εσύ ποιον τρόπο εννοείς??

ΝΟ2 ερώτηση.Όταν στέλνεις ένα μήνυμα πχ 500 χαρακτήρες γράφεις ότι πρέπει να το στείλουμε 1-1 τα μηνύματα σωστά?Πώς όμως θα γίνει αυτό?Αφού όταν ανοίγεις ένα socket αυτό κλείνει μόνο του..Πρέπει να το έχω πάντα ανοιχτό?Πώς θα το κάνω??

ΝΟ3 ερώτηση μου έγραψες <<Θα δίνετε λίστα με τα ΑΕΜ, οπότε θα μπορείς να φτιάξεις την ip του κάθε node στο δίκτυο και μετά θα προσπαθείς να κάνεις connect() σε κάθε node απο τη λίστα που θα έχεις φτιάξει.>>
Που θα δίνετε η λίστα?? Την γραφω εγώ εννοείς??  Επίσης εννοείς ότι πρέπει εγώ να ορίσω μια τυχαία IP για κάθε ΑΕΜ??Και επίσης πώς θα την εντοπίζω την IP του γείτονα για να του στείλω μήνυμα??Εγώ αυτό που ξέρω ότι μπορεί να γίνει είναι με μια συνάρτηση πχ findip() που μπορείς να φτιάξεις να βρεις την IP την δικιά σου ενός ενσωματωμένου ας πούμε αλλά όχι να βρεις την IP του γείτονα..του receiver ας πούμε..γι αυτόν φαντάζομαι πρέπει να βάλεις τον χρήστη να πληκτρολογήσει την IP του receiver..Υπάρχει κι άλλος τρόπος??Εννοείς πχ να στέλνω σε όλους τυχαία μηνύματα από όλους και να έχω εκ των προτέρων εγώ ορίσει τα ΑΕΜ και να βάλω πχ μια random που θα επιλέγει τυχαία από την λίστα που έχω ορίσει εγώ με ΑΕΜ ένα ΑΕΜ....??Αυτό πώς γίνεται όμως στην πράξη??Αυτό εννοείς εν τέλει??

ΝΟ4 ερώτηση:  εγώ τα μηνύματα θα τα σβήνω από τον buffer είτε όταν γεμίσει είτε όταν παραδοθεί το μήνυμα στο σωστό παραλήπτη  ?'Η μόνο αν έχει γεμίσει? Το μονο που θα κοιταω δηλαδή ειναι αν το εχω ξαναστειλει σε αυτον που εχω κανει connection? Ή πρέπει να κοιτάω και αν ο παραλήπτης είναι ο τελικός παραλήπτης του μηνύματος που στέλνω??Και τότε να το διαγράφω από τον buffer του παραλήπτη..Βέβαια εδώ υπάρχει το πρόβλημα ότι μπορεί να διαγραφεί μόνο από τον δικό του buffer και όχι από τον buffer των άλλων και οι άλλοι να μην ξέρουν αν διαγράφηκε..Συνεπώς αν ισχύει αυτό οι άλλοι θα συνεχίσουν να στέλνουν το ίδιο μήνυμα σαν να μην στάλθηκε στον τελικό παραλήπτη του..By the way ίσως να υπάρχει κάποιος efficient τρόπος αλλά χρειάζεται ή όχι τελικώς??

ΑΝ μπορείς please πες μου κι αυτές τις ερωτήσεις κι έκλεισα Tongue


« Last Edit: August 15, 2019, 06:38:07 am by geormich » Logged
_init
Καταξιωμένος/Καταξιωμένη
***
Posts: 116



View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #85 on: August 15, 2019, 13:18:23 pm »

Quote from: geormich on August 15, 2019, 05:59:11 am
ΟΚ..Απλά έχω κάποιες τελευταίες ερωτήσεις πάνω στις απαντήσεις σου..

ΝΟ1 ερώτηση..Στην πρώτη απάντηση που έδοσες για το P2P εννοείς

α.ότι θα έχω 1 τελικό αρχείο(server-client ας το πούμε) με 2 threads μέσα όπου αυτό περιλαμβάνει ουσιαστικά για κάθε thread 1 connection και 1 socket..Δηλαδή καποιο socket πρεπει να ειναι σε standby  
και καποιο να παροσπαθει να κανει connection..Ή αλλιώς ένα socket για να περιμένει για αίτημα connection για αποστολή ή λήψη μηνύματος(λειτουργία server) και ένα socket για να κάνει αίτημα για αποστολή ή λήψη μηνύματος(λειτουργία client)?

β.2 αρχεία ένα server και ένα client με 1 thread το καθένα μέσα

γ.1 αρχείο με ένα thread μέσα????

Εγώ αν το κάνω με 1 αρχείο ξέρω να το κάνω μόνο με 2 threads..Υπάρχει και άλλος τρόπος??Εσύ ποιον τρόπο εννοείς??

Ένα αρχείο θέλεις, ναι.
Απο εκεί και πέρα έχει πολλούς τρόπου με τους οποίους μπορείς να το υλοποιήσεις.
Ενδεικτικά, μια αρχιτεκτονική είναι:
- Ένα server thread που κάνει listen()
- Ένα client thread που προσπαθεί να κάνει connect() σε άλλα nodes απο τη λίστα
- Ένα thread για κάθε socket που προκύπτει είτε απο τον client είτε απο τον server

Θεωρητικά, θα μπορούσες να κάνεις ένα αρχείο με ένα thread μέσα και να χρησιμοποιήσεις asychronous Ι/Ο multiplexing (linux epoll ή kqueue) για να τα διαχειριστείς όλα αλλά είναι αρκετά πιο σύνθετο και δεν υπάρχει λόγος.

Quote from: geormich on August 15, 2019, 05:59:11 am
ΝΟ2 ερώτηση.Όταν στέλνεις ένα μήνυμα πχ 500 χαρακτήρες γράφεις ότι πρέπει να το στείλουμε 1-1 τα μηνύματα σωστά?Πώς όμως θα γίνει αυτό?Αφού όταν ανοίγεις ένα socket αυτό κλείνει μόνο του..Πρέπει να το έχω πάντα ανοιχτό?Πώς θα το κάνω??

Ένα socket δεν κλείνει μετά απο επιτυχή αποστολή μηνύματος. Για να κλείσεις το socket πρέπει να χρησιμοποιήσεις close() ή shutdown().
Εκτός αν θέλεις να πείς κάτι άλλο και δεν το καταλαβαίνω εγώ σωστά.

Quote from: geormich on August 15, 2019, 05:59:11 am
ΝΟ3 ερώτηση μου έγραψες <<Θα δίνετε λίστα με τα ΑΕΜ, οπότε θα μπορείς να φτιάξεις την ip του κάθε node στο δίκτυο και μετά θα προσπαθείς να κάνεις connect() σε κάθε node απο τη λίστα που θα έχεις φτιάξει.>>
Που θα δίνετε η λίστα?? Την γραφω εγώ εννοείς??  Επίσης εννοείς ότι πρέπει εγώ να ορίσω μια τυχαία IP για κάθε ΑΕΜ??Και επίσης πώς θα την εντοπίζω την IP του γείτονα για να του στείλω μήνυμα??Εγώ αυτό που ξέρω ότι μπορεί να γίνει είναι με μια συνάρτηση πχ findip() που μπορείς να φτιάξεις να βρεις την IP την δικιά σου ενός ενσωματωμένου ας πούμε αλλά όχι να βρεις την IP του γείτονα..του receiver ας πούμε..γι αυτόν φαντάζομαι πρέπει να βάλεις τον χρήστη να πληκτρολογήσει την IP του receiver..Υπάρχει κι άλλος τρόπος??Εννοείς πχ να στέλνω σε όλους τυχαία μηνύματα από όλους και να έχω εκ των προτέρων εγώ ορίσει τα ΑΕΜ και να βάλω πχ μια random που θα επιλέγει τυχαία από την λίστα που έχω ορίσει εγώ με ΑΕΜ ένα ΑΕΜ....??Αυτό πώς γίνεται όμως στην πράξη??Αυτό εννοείς εν τέλει??

Υποτίθεται θα μας δώσουν λίστα με τα ΑΕΜ όσων είναι γραμμένοι στο μάθημα.
Η εκφώνηση λέει ότι το κάθε RPi πρέπει να έχει IP στο δίκτυο της μορφής 10.0.ΧΧ.ΥΥ όπου ΧΧΥΥ το ΑΕΜ του κάθε φοιτητή.
Οπότε, αν σου δώσει λίστα με τα ΑΕΜ εσύ έχεις ουσιαστικά και τις IP όλων των πιθανών nodes αφού έχουν την παραπάνω μορφή.
Άρα, στο πρόγραμμα θα φτιάξεις μια τέτοια λίστα με όλες τις IP και θα βάλεις το client thread σου να σκαναρει ένα ένα item τη λίστα και να προσπαθεί να κάνει connect() -κάνοντας skip nodes που πιθανον θα έχουν συνδεθεί απο server thread, οπότε καλό θα ήταν στον πίνακα με τις IP να κράτας και μια bool status στήλη ώστε να μην προσπαθείς να κάνεις connect σε node που είσαι ήδη συνδεδεμένος-

Quote from: geormich on August 15, 2019, 05:59:11 am
ΝΟ4 ερώτηση:  εγώ τα μηνύματα θα τα σβήνω από τον buffer είτε όταν γεμίσει είτε όταν παραδοθεί το μήνυμα στο σωστό παραλήπτη  ?'Η μόνο αν έχει γεμίσει? Το μονο που θα κοιταω δηλαδή ειναι αν το εχω ξαναστειλει σε αυτον που εχω κανει connection? Ή πρέπει να κοιτάω και αν ο παραλήπτης είναι ο τελικός παραλήπτης του μηνύματος που στέλνω??Και τότε να το διαγράφω από τον buffer του παραλήπτη..Βέβαια εδώ υπάρχει το πρόβλημα ότι μπορεί να διαγραφεί μόνο από τον δικό του buffer και όχι από τον buffer των άλλων και οι άλλοι να μην ξέρουν αν διαγράφηκε..Συνεπώς αν ισχύει αυτό οι άλλοι θα συνεχίσουν να στέλνουν το ίδιο μήνυμα σαν να μην στάλθηκε στον τελικό παραλήπτη του..By the way ίσως να υπάρχει κάποιος efficient τρόπος αλλά χρειάζεται ή όχι τελικώς??

To buffer ουσιαστικά είναι το ιστορικό των τελευταίων 2000 unique μηνυμάτων που έχει λάβει το node σου + τα μηνύματα που κάνεις generate.

Προσθέτεις μήνυμα στο buffer όταν:
- συνδεθείς με ένα αλλο node, κάνεις receive μήνυμα και ελέγξεις ότι δεν είναι ήδη στο buffer
- κάνεις generate random μήνυμα, όπως αναφέρει η εκφώνηση

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

Επίσης:
- Δεν σε ενδιαφέρει αν και πως θα φτάσει το μήνυμα σου στον τελικό παραλήπτη.
- Όταν κάνεις generate το δικό σου μήνυμα, απλά το προσθέτεις στο buffer σου και το transmission γίνεται με τον παραπάνω τρόπο.
- Δεν ασχολείσαι καθόλου με τα buffer των άλλων.
- Για το σβήσιμο των παλαιότερων μηνυμάτων υπάρχει μια υλοποίηση στο λινκ που έγραψα στο προηγούμενο ποστ.



« Last Edit: August 15, 2019, 18:21:26 pm by _init » Logged
geormich
Νεούλης/Νεούλα
*
Posts: 26


View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #86 on: August 15, 2019, 23:29:18 pm »

Quote from: _init on August 15, 2019, 13:18:23 pm
Ένα αρχείο θέλεις, ναι.
Απο εκεί και πέρα έχει πολλούς τρόπου με τους οποίους μπορείς να το υλοποιήσεις.
Ενδεικτικά, μια αρχιτεκτονική είναι:
- Ένα server thread που κάνει listen()
- Ένα client thread που προσπαθεί να κάνει connect() σε άλλα nodes απο τη λίστα
- Ένα thread για κάθε socket που προκύπτει είτε απο τον client είτε απο τον server

Θεωρητικά, θα μπορούσες να κάνεις ένα αρχείο με ένα thread μέσα και να χρησιμοποιήσεις asychronous Ι/Ο multiplexing (linux epoll ή kqueue) για να τα διαχειριστείς όλα αλλά είναι αρκετά πιο σύνθετο και δεν υπάρχει λόγος.

Ένα socket δεν κλείνει μετά απο επιτυχή αποστολή μηνύματος. Για να κλείσεις το socket πρέπει να χρησιμοποιήσεις close() ή shutdown().
Εκτός αν θέλεις να πείς κάτι άλλο και δεν το καταλαβαίνω εγώ σωστά.

Υποτίθεται θα μας δώσουν λίστα με τα ΑΕΜ όσων είναι γραμμένοι στο μάθημα.
Η εκφώνηση λέει ότι το κάθε RPi πρέπει να έχει IP στο δίκτυο της μορφής 10.0.ΧΧ.ΥΥ όπου ΧΧΥΥ το ΑΕΜ του κάθε φοιτητή.
Οπότε, αν σου δώσει λίστα με τα ΑΕΜ εσύ έχεις ουσιαστικά και τις IP όλων των πιθανών nodes αφού έχουν την παραπάνω μορφή.
Άρα, στο πρόγραμμα θα φτιάξεις μια τέτοια λίστα με όλες τις IP και θα βάλεις το client thread σου να σκαναρει ένα ένα item τη λίστα και να προσπαθεί να κάνει connect() -κάνοντας skip nodes που πιθανον θα έχουν συνδεθεί απο server thread, οπότε καλό θα ήταν στον πίνακα με τις IP να κράτας και μια bool status στήλη ώστε να μην προσπαθείς να κάνεις connect σε node που είσαι ήδη συνδεδεμένος-

To buffer ουσιαστικά είναι το ιστορικό των τελευταίων 2000 unique μηνυμάτων που έχει λάβει το node σου + τα μηνύματα που κάνεις generate.

Προσθέτεις μήνυμα στο buffer όταν:
- συνδεθείς με ένα αλλο node, κάνεις receive μήνυμα και ελέγξεις ότι δεν είναι ήδη στο buffer
- κάνεις generate random μήνυμα, όπως αναφέρει η εκφώνηση

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

Επίσης:
- Δεν σε ενδιαφέρει αν και πως θα φτάσει το μήνυμα σου στον τελικό παραλήπτη.
- Όταν κάνεις generate το δικό σου μήνυμα, απλά το προσθέτεις στο buffer σου και το transmission γίνεται με τον παραπάνω τρόπο.
- Δεν ασχολείσαι καθόλου με τα buffer των άλλων.
- Για το σβήσιμο των παλαιότερων μηνυμάτων υπάρχει μια υλοποίηση στο λινκ που έγραψα στο προηγούμενο ποστ.

Oκ..Κατάλαβα..Ευχαριστώ πάρα πολύ _init..Η βοήθειά σου ήταν valuable.. Smiley
Μια final last question Tongue
Η υλοποίησή της εργασίας με το μοντέλο P2P ουσιαστικά βασίζεται στο consumer-producer μοντέλο με τον consumer ως τον client και τον producer ως τον server??
Απλά στο P2P model ο κάθε consumer-client είναι και producer-server??
Θα μπορούσα δηλαδή να βασίσω την υλοποίησή μου στο producer-consumer μοντέλο θεωρώντας τον consumer ως τον client και τον producer ως τον server?
« Last Edit: August 16, 2019, 00:36:55 am by geormich » Logged
_init
Καταξιωμένος/Καταξιωμένη
***
Posts: 116



View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #87 on: August 16, 2019, 00:17:25 am »

Quote from: geormich on August 15, 2019, 23:29:18 pm
Oκ..Κατάλαβα..Ευχαριστώ πάρα πολύ _init..Η βοήθειά σου ήταν valuable.. Smiley
Μια final last question Tongue
Η υλοποίησή της εργασίας με το μοντέλο P2P ουσιαστικά βασίζεται στο consumer-producer μοντέλο με τον consumer ως τον client και τον producer ως τον server??
Απλά στο P2P model ο κάθε consumer-client είναι και producer-server??

χαρά μου να βοθήσω όσο μπορώ  Cool

Ναι, θεωρητικά θα μπορούσες να κάνεις ένα τέτοιο abstraction (one producer-multiple consumers) αλλά δεν ξέρω κατά πόσο θα βοηθούσε.
Το κάθε node είναι producer με την έννοια ότι συνδέονται σε αυτό άλλα nodes και τραβάνε απο το buffer του και παράλληλα είναι και ένας απο τους πολλούς consumers του κάθε άλλου node που συνδέεται με τη έννοια ότι τραβάει απο το buffer εκείνου.

Logged
feugatos_#
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Posts: 1063

.


View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #88 on: August 16, 2019, 01:45:30 am »

Μιας που το topic αναβίωσε... θα ξανακάνω την ίδια ερώτηση:

Υπάρχει κάποιος που έχει καταφέρει να κάνει δύο zsun συσκευές να επικοινωνήσουν μεταξύ τους;
Logged
geormich
Νεούλης/Νεούλα
*
Posts: 26


View Profile
Re: [Eνσωματωμένα] Εργασίες 2019
« Reply #89 on: August 16, 2019, 05:47:08 am »

Quote from: _init on August 16, 2019, 00:17:25 am
χαρά μου να βοθήσω όσο μπορώ  Cool

Ναι, θεωρητικά θα μπορούσες να κάνεις ένα τέτοιο abstraction (one producer-multiple consumers) αλλά δεν ξέρω κατά πόσο θα βοηθούσε.
Το κάθε node είναι producer με την έννοια ότι συνδέονται σε αυτό άλλα nodes και τραβάνε απο το buffer του και παράλληλα είναι και ένας απο τους πολλούς consumers του κάθε άλλου node που συνδέεται με τη έννοια ότι τραβάει απο το buffer εκείνου.



Μην το συζητάς.. Tongue ..Με βοήθησες πάρα πολύ όπως σου είπα....    Roll Eyes

Βασικά κάτι τελευταίες απορίες έχω μωρέ.. LOL Tongue Τελευταίες τελευταίες ελπίζω......Να κοκκαλώσει το χέρι μου από την πληκτρολόγηση να μην μπορώ να γράψω άλλο.. Tongue

1.Βασικά αυτό για τον consumer-producer στο ρώτησα..γιατί δεν έχω καταλάβει στο πρώτο σκέλος της απάντησής σου που μου είπες για το P2P αν εννοείς

a.ότι θα πρέπει να χωρίσω server και client σε 2 συναρτήσεις και εκεί μέσα στις συναρτήσεις τους να βάλω τα threads(αν και τότε θες 4 threads,1 για το connect 1 για το listen και 2 για τα sockets)και θα τους καλώ από την main σαν συναρτήσεις ή σαν threads..  ή αν εννοείς
b.ότι θα υπάρχουν μέσα στην main αυτά τα 3 threads και απλά θα υλοποιούν αυτές τις λειτουργίες..Και θα προσομοιώνεται έτσι η λειτουργία server και client μαζί..
Τι από τα 2 εννοείς?? Smiley

2.Επίσης πάνω στο ίδιο θέμα με το P2P πώς θα εναλάσσεται η λειτουργία server client?Aπλά μέσω των threads?px 0.1 sec το ένα 0.1 sec το άλλο? Ή θα είναι ανοιχτά και τα δύο πάντα?Όμως αυτό λογικά δεν είναι λάθος?Δεν θα πρέπει για ένα χρονικό διάστημα το κάθε ενσωματωμένο να λειτουργεί είτε μόνο σαν node είτε μόνο σαν server?(πχ με κάποια alarm ή κάτι να ενεργοποιείς την μία ή την άλλη λειτουργία κάθε φορά)

3.Επίσης τη λίστα με τα ΑΕΜΣ και τις IPs είπε μήπως πότε θα τα ανεβάσει??Πέφτει και εξεταστική γαμώτο..Αυτά θα τα βάλουμε σε μια λίστα δηλαδή και από εκεί θα τα τραβήξουμε?Δεν θα τα πληκτρολογεί ο χρήστης?

4.Τέλος τα μηνύματα πώς θα τα παράγουμε..Με μια random τυχαία ανά 1-5 λεπτά μου είπες..Τα μηνύματα επίσης θα παράγονται κι αυτά τυχαία??Ή θα τα πληκτρολογεί ο χρήστης τυχαία??

5.Όταν λες για το listen() ένα thread εννοείς ένα για το listen() και για το bind() μαζί ή μόνο για το listen()??Ενώ εννοείς 1 thread για το client socket ή 2 threads,1 για το client socket κι ένα για το server socket??

Ευχαριστώ και εκ των προτέρων για τη βοήθεια.. Smiley Tongue
« Last Edit: August 16, 2019, 10:56:49 am by geormich » Logged
Pages: 1 ... 4 5 [6] 7 8 ... 10 Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...