【发布时间】:2011-04-11 19:36:14
【问题描述】:
我目前有一种通过 Bonjour 发送数据的方法。问题是我的数据限制为 1000 kB。我知道如果我想发送更大的数据,我需要将它分成数据包。
但这提出了一个问题,即如何防止数据包丢失,并确保接收方接收到所有数据包。
我不擅长网络,想请你帮我改变这个简单的方法,以实现更大的数据传输。
- (BOOL)sendData:(NSData *)data error:(NSError **)error {
BOOL successful = NO;
if(self.outputStreamHasSpace) {
NSInteger len = [self.outputStream write:[data bytes] maxLength:[data length]];
if(-1 == len) {
// error occured
*error = [[NSError alloc]
initWithDomain:ServerErrorDomain
code:kServerNoSpaceOnOutputStream
userInfo:[[self.outputStream streamError] userInfo]];
} else if(0 == len) {
// stream has reached capacity
*error = [[NSError alloc]
initWithDomain:ServerErrorDomain
code:kServerOutputStreamReachedCapacity
userInfo:[[self.outputStream streamError] userInfo]];
} else {
successful = YES;
}
} else {
*error = [[NSError alloc] initWithDomain:ServerErrorDomain
code:kServerNoSpaceOnOutputStream
userInfo:nil];
}
return successful;
}
谢谢。
【问题讨论】:
-
@Joe Blow 你是对的,尽管 GAMEKIT 隐藏在幕后。我已经用比我的缓冲区大的数据解决了这个问题。
标签: iphone networking bonjour