【发布时间】:2014-07-11 16:48:30
【问题描述】:
我正在使用MPCF 创建多人游戏。您使用 iPhone 在 iPad 上控制宇宙飞船。
我在随机时间和间隔遇到各种延迟和延迟以及缓冲/暂停,现在已经登陆 Apples Technical Q&A NW26 论文,该论文谈论禁用 Nagle 算法。我尝试了一下,但我的程序不断崩溃,我不明白为什么。 CFWriteStreamCopyProperty 似乎总是返回 NULL。
- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode
{
switch (eventCode) {
case NSStreamEventOpenCompleted:
// Trying to get a handle to the native socket
CFSocketNativeHandle rawsock;
// This always return NULL
CFDataRef socketData = CFWriteStreamCopyProperty((__bridge CFWriteStreamRef)(stream), kCFStreamPropertySocketNativeHandle);
// And this row always crash (coz of socketData being NULL i guess)
CFDataGetBytes(socketData, CFRangeMake(0, sizeof(CFSocketNativeHandle)), (UInt8 *)&rawsock);
CFRelease(socketData);
// Code example from Apple that need a handle to the native socket, that I am trying to get above
int err;
static const int kOne = 1;
err = setsockopt(rawsock, IPPROTO_TCP, TCP_NODELAY, &kOne, sizeof(kOne));
if (err < 0) {
err = errno;
}
break;
default:
break;
}
}
感谢任何帮助。
【问题讨论】:
-
您找到解决方案了吗?我也在尝试减少延迟,并且不使用 `sendData:toPeers:withMode:error:` 和
MCSessionSendDataUnreliable,这样我就可以避免处理数据包丢失...... -
不,抱歉。切换到蓝牙 LE。
-
太糟糕了...感谢您的回复。
标签: ios objective-c network-programming nsstream multipeer-connectivity