iOS UDP套接字使用多播地址和端口接收延迟

时间:2017-09-05 23:46:10

标签: c++ ios iphone macos sockets

我正在使用MacBook Pro在我的主线程中通过套接字使用多播地址和端口每隔12 mS发送一系列1024字节UDP数据报(丑陋但说明性):

for(;;) {
//-------------- Send ----------------
    try {
        sock.sendTo(filebufPos, readsize, mcAddr, mcPort);
        sendCount++;
        if(sendCount < sends_needed) {
            filebufPos += readsize;
        } else {
            sendCount = 0;          //Reset send counter
            filebufPos = filebuf;   //Reset pointer to start of file buffer
        }
    } catch (SocketException &e) {
        cerr << e.what() << endl;
    }
    usleep(12000);   //------------ Pause between sends-----------
}

在我的iPhone 5上,我尝试在回调例程中使用非阻塞'recvFrom'调用接收数据报,该回调例程每1.5 mS调用一次,ala:

try {
    nBytesReceived = sock->recvFrom((void *)buf, nBytesCount, mcAddr, mcPort);
} catch (SocketException &e) {
    cerr << e.what() << endl;
}

我测量iPhone客户端上成功的UDP套接字recvs之间的时间。理想情况下,我应该每8次回调(12 ms)接收UDP数据报,并且大多数情况下都是如此。然而,有时recvs之间的时间非常短,而在其他时间recvs之间的时间可能长达100-150 mS。

为什么会发生这种情况的任何想法? 谢谢!

0 个答案:

没有答案