代码之家  ›  专栏  ›  技术社区  ›  Ash

蓝牙会话在发送第一个数据后立即结束

  •  0
  • Ash  · 技术社区  · 14 年前

    我不明白为什么会发生这种情况,但当我使用蓝牙向连接的对等方发送数据时,它们接收到的数据非常好,但会立即断开连接,使进一步的交互无法进行。有人能说明为什么会发生这种情况吗?我尝试将超时更改为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;
    }
    

    1 回复  |  直到 14 年前
        1
  •  0
  •   Ash    14 年前