无法理解为什么会发生这种情况,但是当我使用蓝牙向连接的对等设备发送数据时,他们会很好地接收数据但是会立即断开连接,无法进行进一步的交互。任何人都可以说明为什么会发生这种情况吗?我尝试将超时更改为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;
}
}
答案 0 :(得分:0)
我不能肯定这是确定的答案,但我已经通过删除GKPeerPicker并实现我自己的客户端 - 服务器设置代码来解决问题,这些代码生成了“保持活着”。我认为问题实际上只是我手动设置会话,然后使用Peer Picker连接到它。看来Peer Pickers在连接其他Peer Pickers时只是稳定且有用。