background image

5.4 Αποστολή μηνυμάτων μεταξύ συσκευών 

[108] 

 

5.4 Αποστολή μηνυμάτων μεταξύ συσκευών 

 
Έχουμε δημιουργήσει επιτυχώς το αντικείμενο για κάθε πελάτη και 

μπορούμε  να  στείλουμε  το  αίτημα  σύνδεσης  προς  όλους  τους  πελάτες. 
Κάθε  πελάτης  πρέπει  να  απαντήσει  ασύγχρονα  με  το  όνομα  του. 
Λαμβάνοντας το μήνυμα ο διακομιστής θέτει το όνομα για κάθε παίκτη. 

Το  αντικείμενο  “GKSession”  έχει  μια  μέθοδο  που  ονομάζεται 

sendDataToAllPeers:withDataMode:error.  Τη μέθοδο  αυτή  χρησιμοποιεί 
ο διαχειριστής για να στείλει αντικείμενα τύπου “NSData” σε όλους τους 
συνδεδεμένους  πελάτες.  Τα  αντικείμενα  “NSData’  ουσιαστικά  είναι  τα 
μηνύματα που ανταλλάσουν οι συσκευές μεταξύ τους. 

Στην εφαρμογή μας όλα τα μηνύματα έχουν την ακόλουθη διάταξη: 

 

Εικόνα 5.9: Διάταξη πακέτων μηνυμάτων 

 
Κάθε  πακέτο  είναι  τουλάχιστον  δέκα  byte.  Οι  διαφορετικοί  τύποι 

πακέτων  έχουν  την  ίδια  κεφαλίδα  αλλά  διαφορετικό  ωφέλιμο  φορτίο 
(payload). Τα δέκα αυτά bytes αποτελούνται από: 

 

Τα τέσσερα πρώτα byte, από την κεφαλίδα με το όνομα QUIZ 
και επαληθεύουν ότι τα πακέτα είναι όντως δικά μας. 

 

Τα  επόμενα  τέσσερα  χρησιμοποιούνται  για  να  αναγνωρίζουν 
πότε  ένα  πακέτο  φτάνει  εκτός  σειράς  και  αποτελούνται  από 
ένα ακέραιο 32 bit. 

 

Τα τελευταία δύο byte αντιπροσωπεύουν το είδος του πακέτου. 
Επειδή  έχουμε  πολλά  είδη  μηνυμάτων  που  αποστέλλονται 
μεταξύ  του    διακομιστή  και  των  πελατών,  αυτός  ο  ακέραιος 
των 16 bit καθορίζει τι είδος πακέτο είναι.