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”, οπότε για να μην έχουμε πρόβλημα όταν