background image

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

[109] 

 

Τέλος  για  κάθε  τύπο  πακέτου,  μπορούν  να  υπάρχουν  περισσότερα 

δεδομένα.  Το  πακέτο  που  στέλνουν  ο  πελάτες  στο  διακομιστή  με  το 
όνομα,  περιέχει  για  παράδειγμα,  ωφέλιμο  φορτίο  τύπου  “UTF-8  string” 
με το όνομα του παίκτη. 

Για να κρατήσουμε τον κώδικα μας 

τακτοποιημένο 

δημιουργούμε 

μια 

κλάση  τύπου  “NSObject”  την  οποία 
ονομάζουμε  “Packet”.  Η  κλάση  αυτή 
διαχειρίζεται  τα  παραπάνω  bit-byte 
πίσω  από  το  παιχνίδι  μας.  Αρχικά 
δημιουργούμε  όλα  τα  διαφορετικά 
μηνύματα  που  θα  αποστέλλονται  και 
θα λαμβάνονται. Έπειτα δημιουργούμε 
τη  μέθοδο  δεδομένων  “NSDdata”. 
Αυτή  διαθέτει  ένα  αντικείμενο  τύπου 
“NSMutableData”,  στο  οποίο  τοπο-
θετούνται οι δύο ακέραιοι των 32 bit και ένας 16 bit. Αυτά είναι τα δέκα 
byte που έχουμε αναφέρει. 

 

Για  να  καθορίσουμε  το  μοντέλο  δεδομένων  των  μηνυμάτων 

δημιουργούμε μια νέα κλάση τύπου “NSData”. Η κλάση αυτή καθορίζει 
τα διαφορετικά μεγέθη των ακεραίων. Στο τέλος κάθε μεθόδου καλούμε 
τη συνάρτηση [self appendBytes:length:], προκειμένου να προσθέσουμε 
στη  μνήμη  την  τιμή  της  κάθε 
μεταβλητής.  Πρέπει  να  τονίσουμε 
ότι  πριν  από  αυτή  τη  συνάρτηση 
καλούμε  τη  συνάρτηση  htonl()  για 
την  τιμή.  Αυτό  το  κάνουμε  για  να  διασφαλίσουμε  ότι  τα  byte  του 
ακεραίου μεταδίδονται με τη σωστή  “δικτυακή σειρά” που είναι η  “big 
endian”  [28].  Οι  επεξεργαστές  ARM  χρησιμοποιούν  τη  διάταξη  “bi 
endian”.  Αυτό  σημαίνει  ότι  μπορούν  να  λειτουργήσουν  είτε  ως  “big 
endian” είτε ως “little endian”, οπότε για να μην έχουμε πρόβλημα όταν