Travailler avec le GameKit pendant un moment J'ai trouvé qu'il y a une limite d'environ 90k par 'envoyer' donc si votre fichier est plus grand que 90k vous devrez le casser. Voici comment je vous suggère de briser les choses:
1er - Envoyer le nom de votre fichier
NSData* fileNameData = [fileNameStr dataUsingEncoding: NSASCIIStringEncoding];
// send 'fileNameData'
2 - Envoyer le nombre de morceaux vous allez envoyer
NSUInteger fiftyK = 51200;
NSUInteger chunkCount = (((NSUInteger)(srcData.length/fiftyK)) + ((srcData.length % fiftyK) == 0) ? 0 : 1))
NSString chunkCountStr = [NSString stringWithFormat:@"%d",chunkCount];
NSData* chunkCountData = [chunkCountStr dataUsingEncoding: NSASCIIStringEncoding];
// send 'chunkCountData'
3 - Décomposer et envoyer votre objet NSData dans un ensemble de NSObjects de moins de 50k chacun (juste pour être sur la taille de sécurité)
NSData *dataToSend;
NSRange range = {0, 0};
for(NSUInteger i=0;i<srcData.length;i+=fiftyK){
range = {i,fiftyK};
dataToSend = [srcData subdataWithRange:range];
//send 'dataToSend'
}
NSUInteger remainder = (srcData.length % fiftyK);
if (remainder != 0){
range = {srcData.length - remainder,remainder};
dataToSend = [srcData subdataWithRange:range];
//send 'dataToSend'
}
Du côté de la réception, vous aurez envie de faire ce qui suit:
1er - Recevoir le nom du fichier
// Receive data
NSString* fileNameStr = [[NSString alloc] initWithData:receivedData encoding:NSASCIIStringEncoding]
2 - Recevoir le nombre de morceaux que vous êtes sur le point de recevoir
// Receive data
NSString* chunkCountStr = [[NSString alloc] initWithData:receivedData encoding:NSASCIIStringEncoding]
NSUInteger chunkCount = [chunkCount intValue];
3e - Recevoir les blocs de données
NSMutableData data = [[NSMutableData alloc]init];
for (NSUInteger i=0; i<chunkCount;i++){
// Receive data
[data appendData:receivedData];
}
Si tout a fonctionné correctement t vous allez maintenant avoir un objet fileNameStr
contenant votre nom de fichier et un objet data
contenant le contenu de votre fichier.
Hope this helps - Ayal
Merci Ayal pour votre réponse détaillée, je vais vérifier votre code prochainement et vous faire savoir comment ça se passait. – Pripyat
Bonne réponse! :) Merci beaucoup. – Nick
Quelqu'un at-il un projet qui fait cela, mais je ne suis pas sûr du bit de nom de fichier. Je veux envoyer une photo – Burf2000