Я создаю приложение iPhoe с сокетом для ПК-приложения, мне нужно получить изображение из этого ПК-приложения.
Я впервые использую «CFStreamCreatePairWithSocketToHost». После того как я устанавливаю сокет с «NSOperation», я вызываю
<code>
CFStreamClientContext streamContext = {0, self, NULL, NULL, NULL};
BOOL success = CFReadStreamSetClient(myReadStream, kMyNetworkEvents,MyStreamCallBack,&streamContext);
CFReadStreamScheduleWithRunLoop(myReadStream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
тогда я звоню
<code>
CFWriteStreamWrite(myWriteStream, &writeBuffer, 3);
// Open read stream.
if (!CFReadStreamOpen(myReadStream)) {
// Notify error
}
.
.
.
while(!cancelled && !finished) {
SInt32 result = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.25, NO);</p>
<p>if (result == kCFRunLoopRunStopped || result == kCFRunLoopRunFinished) {
break;
}</p>
<p>if (([NSDate timeIntervalSinceReferenceDate] - _lastRead) > MyConnectionTimeout) {
// Call timed out
cancelled = YES;</p>
<p>break;
}</p>
<p>// Also handle stream status
CFStreamStatus status = CFReadStreamGetStatus(myReadStream);
}
а затем, когда я получаю "kCFStreamEventHasBytesAvailable"
я использую
<code>
while (CFReadStreamHasBytesAvailable(myReadStream))
{
CFReadStreamRead(myReadStream, readBuffer, 1000);
//and buffer the the bytes
}
Это непредсказуемо, иногда я получаю полную картину, иногда я получаю только ее часть, и я не могу понять, что делает другое.
может у кого-то есть идея, что тут не так?
спасибо