잠시 GameKit을 사용해 본 결과, '보내기'당 약 90k의 제한이 있다는 것을 알았습니다. 따라서 파일 크기가 90k보다 크다면 해체해야합니다. 여기에 내가 당신이 일 휴식 제안 방법 : - 귀하의 파일의 이름을 보내기
NSData* fileNameData = [fileNameStr dataUsingEncoding: NSASCIIStringEncoding];
// send 'fileNameData'
는 2 -
가
1 덩어리의 수를 전송하여 보낼 것을
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 - 분리하여 NSData 객체를 각각 50k 미만의 NSObject 세트로 전송하십시오 (안전한 크기가되도록).
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'
}
은 수신 측에서 당신은 다음을 수행 할 수 있습니다 :
1 - 파일 이름을 수신
// Receive data
NSString* fileNameStr = [[NSString alloc] initWithData:receivedData encoding:NSASCIIStringEncoding]
2 - 당신이에 대한 청크의 수를받을 수신
// Receive data
NSString* chunkCountStr = [[NSString alloc] initWithData:receivedData encoding:NSASCIIStringEncoding]
NSUInteger chunkCount = [chunkCount intValue];
3 - 데이터 덩어리 받기
NSMutableData data = [[NSMutableData alloc]init];
for (NSUInteger i=0; i<chunkCount;i++){
// Receive data
[data appendData:receivedData];
}
모든 것이 성공한 경우 이제 파일 이름이 포함 된 fileNameStr
개체와 파일 내용이 포함 된 data
개체가 생깁니다. 이 도움이
희망 - AYAL 상세한 응답
감사 AYAL, 나는 밖으로 곧 당신의 코드를 확인하고 당신이 어떻게 갔는지 알려 드리겠습니다. – Pripyat
대단한 반응! :) 고마워. – Nick
누구나이 작업을 수행하는 프로젝트가 있는데 파일 이름 비트가 확실하지 않습니다. 그림을 보내고 싶습니다 – Burf2000