MPCF을 사용하여 멀티 플레이어 게임을 만들고 있습니다. 당신은 아이폰을 사용하여 iPad에서 우주선을 통제합니다.NSOutputStream에 대한 Nagle 알고리즘 사용 안 함
임의의 시간과 간격으로 다양한 지연 시간과 대기 시간 및 버퍼링/일시 중지가 발생했으며 이제는 Nagle 알고리즘이 비활성화 된 것에 대해 사과 한 Technical Q&A NW26 종이에 도착했습니다. 나는 그것을 시도하지만, 내 프로그램은 계속 충돌하고 왜 이해가 안 돼요. 그것은 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 : 오류 :'와'MCSessionSendDataUnreliable' 그래서 난 패킷 손실 처리 방지 할 수 있습니다 ... – jou
아니, 죄송합니다. Bluetooth LE로 전환되었습니다. – bobmoff
너무 나쁨 ... 답변 해 주셔서 감사합니다. 나는 많은 작은 패킷마다 초를 전송하고, 이에 – jou