için Nagle'in algoritmasını devre dışı bırakma MPCF kullanarak çok oyunculu bir oyun oluşturuyorum. IPhone'u kullanarak iPad'de bir boşluk ayarını kontrol edersiniz.NSOutputStream
Nadir zamanlarda ve aralıklarla çeşitli gecikme ve gecikme ve arabelleğe alma/duraklama deneyimleri yaşıyorum ve şimdi Nagle Algoritması'nı devre dışı bırakma hakkında konuşan Elmalar Technical Q&A NW26 kağıdına indi. Deniyorum ama programım çöküyor ve nedenini anlamıyorum. CFWriteStreamCopyProperty her zaman NULL döndürüyor gibi görünüyor.
- (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;
}
}
Herhangi bir yardım için teşekkür ederiz.
Bunun için bir çözüm buldunuz mu? Ayrıca gecikmeyi azaltmaya çalışıyorum ve ' sendData: toPeers: withMode: error:' 'ile MCSessionSendDataUnreliable' kullanmadan paket kaybı ile uğraşmayı engelleyebilirim… – jou
Nope, sorry. Bluetooth LE'ye geçti. – bobmoff
Çok kötü… Cevabınız için teşekkür ederiz. – jou