Отправлять и получать NSData через GameKit

Я пытаюсь отправить некоторые NSData через Bluetooth через GameKit .

Пока у меня установлен GameKit вверх и могут отправлять небольшие сообщения,Теперь я хотел бы развернуть и отправить по всем файлам.

Я читал, что вам нужно разбить большие файлы на пакеты, прежде чем отправлять их по отдельности.

Поэтому я решил создать struct , чтобы упростить декодирование пакетов, когда они получены на другом конце:

typedef struct {
    const char *fileName;
    NSData *contents;
    int fileType;
 int packetnumber;
 int totalpackets;
} file_packet; 

Однако для небольших файлов (8 КБ и меньше) я думал, что одного пакета будет достаточно.

Итак, для одного пакета я думал, что смогу создать file_packet, установить его свойства и отправить его через -sendDataToAllPeers: withDataMode: error:

NSData *fileData;
file_packet *packet = (file_packet *)malloc(sizeof(file_packet));
packet->fileName = [filename cStringUsingEncoding:NSASCIIStringEncoding];
packet->contents = [NSData dataWithContentsOfFile:selectedFilePath];
packet->packetnumber = 1;
packet->totalpackets = 1;
packet->fileType = 56; //txt document
fileData = [NSData dataWithBytes:(const void *)packet length:sizeof(file_packet)];
free(packet);

NSError *error = nil;
[self.connectionSession sendDataToAllPeers:fileData withDataMode:GKSendDataReliable error:&error];
if (error) {
 NSLog(@"An error occurred: %@", [error localizedDescription]);
}

Однако я не думаю, что что-то правильное установление fileData - и error ничего не отображает .

Когда файл получен, я делаю следующее:

file_packet *recievedPacket = (file_packet *)malloc(sizeof(file_packet));
recievedPacket = (file_packet *)[data bytes];
NSLog(@"packetNumber = %d", recievedPacket->packetnumber);
...

Однако вывод на консоль packetNumber = 0 , даже когда я установил packetNumber равным 1.

Я упускаю очевидное? Я мало что знаю о NSData или GameKit .

Итак, мой вопрос - могу ли я добавить file_packet в NSData , и если да, то как мне это сделать успешно - и как разделить файлы на несколько пакетов?

5
задан Luksprog 11 April 2012 в 06:40
поделиться