Ios 使用bonjour和nsnetservice的慢速数据包传输

Ios 使用bonjour和nsnetservice的慢速数据包传输,ios,tcp,bluetooth,Ios,Tcp,Bluetooth,我正在开发一款基于本地网络的游戏。我的意思是,你可以在本地网络wifi或蓝牙的不同iphone上播放。我使用带有tcp连接的NSStream实现了数据传输。我有一台服务器监听网络: service = [[NSNetService alloc] initWithDomain:@"local."// 4 type:CreateNSString(serviceType)

我正在开发一款基于本地网络的游戏。我的意思是,你可以在本地网络wifi或蓝牙的不同iphone上播放。我使用带有tcp连接的NSStream实现了数据传输。我有一台服务器监听网络:

 service = [[NSNetService alloc] initWithDomain:@"local."// 4
                                              type:CreateNSString(serviceType)
                                              name:CreateNSString(serviceName)
                                              port:80];
        if(service)
        {
            service.includesPeerToPeer = YES;

            [service setDelegate:delegatePublisherObject];// 5
            [service publishWithOptions:NSNetServiceListenForConnections];
以及在以下区域搜索游戏会话的客户:

serviceBrowser = [[NSNetServiceBrowser alloc] init];
        serviceBrowser.includesPeerToPeer = YES;
        [serviceBrowser setDelegate:delegateBrowserObject];

        [serviceBrowser searchForServicesOfType: CreateNSString(service) inDomain:@"local"];
但是他们之间的数据传输有问题。从现在起,我所做的是:

我将要发送的数据排队。如果我可以直接在输出流中写入它,我会这样做

dataWriteQueue insertObject:data atIndex:0];
if (flag_canSendDirectly)
    [self _sendData];

...

 - (void)_sendData {
 NSData *data = [dataWriteQueue lastObject];
flag_canSendDirectly = NO;
if (data == nil)
{
    flag_canSendDirectly = YES;
    return;
}
bufferToSend = (uint8_t *)[data bytes];
NSInteger bytesWritten;

bytesWritten = [_outputStream write:bufferToSend maxLength:dataBufferLimit - currentDataOffset];
如果调用了回调nsstreamventhassspaceavailable,我将发送排队的最后几条数据

case NSStreamEventHasSpaceAvailable: {
        if (stream == _outputStream)
        {
            //read a new chunk of data
            [self _sendData];

        }

    } break;
在对等点之间传输数据时,我已停止浏览设备。
转移做得很好。但我的问题是蓝牙传输速度非常快。但wifi的速度较慢。我不明白,这似乎不合逻辑。你对这个问题有什么线索吗?当对等方连接时,浏览将关闭。

我可以进入同一问题。你找到解决办法了吗?不幸的是,我们找到了解决这个问题的办法。即使在apple代码示例Witap上也会出现数据包传输速度慢的问题,我做了这个代码示例的udp版本,但是数据包丢失的数量太大了。奇怪的是,蓝牙连接的数据传输速度很快,我也能解决同样的问题。你找到解决办法了吗?不幸的是,我们找到了解决这个问题的办法。即使在apple代码示例Witap上也会出现数据包传输速度慢的问题,我做了这个代码示例的udp版本,但是数据包丢失的数量太大了。奇怪的是,蓝牙连接的数据传输速度很快。