我不明白为什么会发生这种情况,但当我使用蓝牙向连接的对等方发送数据时,它们接收到的数据非常好,但会立即断开连接,使进一步的交互无法进行。有人能说明为什么会发生这种情况吗?我尝试将超时更改为60秒,尝试将发送的数据量减少到500字节以下,但仍然会遇到这样一种奇怪的情况,即对等点之间会立即断开连接。可能是因为我用GKSession初始化网络,然后用GKPeerPicker让人们连接到它?
这是我的数据发送和接收代码。这大部分是临时的,可能会更改以适应大量数据,但现在我只想建立一个稳定的连接。
-(void)transmitWholeClusterToPeer:(NSString *)peerID{
NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *encoder = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
[encoder encodeInt:0 forKey:@"Mode"];
[encoder encodeObject:clusterMap.header forKey:@"Header"];
[encoder finishEncoding];
NSArray *peerList = [[[NSArray alloc] initWithObjects:peerID, nil] copy];
[network sendData:data toPeers:peerList withDataMode:GKSendDataReliable error:nil];
[encoder autorelease];
[peerList autorelease];
}
-(void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession:(GKSession *)session
context:(void *)context{
NSKeyedUnarchiver *decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
int mode = [decoder decodeIntForKey:@"Mode"];
switch (mode) {
case 0:
clusterMap.header = [decoder decodeObjectForKey:@"Header"];
break;
default:
break;
}