Sto creando un gioco multiplayer usando MPCF. Controlli una nave spaziale sull'iPad usando l'iPhone.Disabilita l'algoritmo di Nagle per NSOutputStream
Sto sperimentando varie quantità di ritardo e latenza e buffering/pause a intervalli e tempi casuali e ora sono atterrato su Apple Technical Q&A NW26 carta che parla di Algoritmo Nagle disabilitato. Sto provando ma il mio programma continua a bloccarsi e non capisco perché. Sembra che CFWriteStreamCopyProperty restituisca sempre 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;
}
}
Qualsiasi aiuto è apprezzato.
Hai mai trovato una soluzione per questo? Sto anche cercando di ridurre la latenza e senza usare ' sendData: toPeers: withMode: error:' con 'MCSessionSendDataUnreliable', così posso evitare di affrontare la perdita di pacchetti ... – jou
No, mi dispiace. Passato a Bluetooth LE. – bobmoff
Peccato ... Grazie per la risposta. – jou