gpt4 book ai didi

iphone - 在运行循环上安排读取流-iOS

转载 作者:行者123 更新时间:2023-12-03 12:06:40 25 4
gpt4 key购买 nike

我是Cocoa/iOS的新手-iPhone平台

我正在尝试使用Core Foundations处理网络流。我正在遵循CFNetworking指南,但无法进行简单的测试。以下将编译并运行,但没有任何记录到NSLog。

我提供给CFReadStreamSetClient的回调clientCB,并在运行循环上安排readStream(至少是这样)。

我期望CallBack报告一些内容。

有人可以告诉我我要去哪里错吗?我已经远程登录到该服务器,并且可以正常工作。任何的意见都将会有帮助。

谢谢。

void clientCB(CFReadStreamRef stream, CFStreamEventType event, void *myPtr)
{
switch(event) {
case kCFStreamEventHasBytesAvailable:{
UInt8 buf[BUFSIZE];
CFIndex bytesRead = CFReadStreamRead(stream, buf, BUFSIZE);
if (bytesRead > 0) {
NSLog(@"Server has data to read!");
}
break;
}
case kCFStreamEventErrorOccurred:
NSLog(@"A Read Stream Error Has Occurred!");
case kCFStreamEventEndEncountered:
NSLog(@"A Read Stream Event End!");
default:
break;
}

}



- (IBAction) connectToServer: (id) sender

{
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFHostRef host = CFHostCreateWithName(kCFAllocatorDefault, (CFStringRef)@"irc.freenode.net");
CFStreamCreatePairWithSocketToCFHost(kCFAllocatorDefault, host, 6667, &readStream, &writeStream);

CFStreamClientContext myContext = {
0,
self,
(void *(*)(void *info))CFRetain,
(void (*)(void *info))CFRelease,
(CFStringRef (*)(void *info))CFCopyDescription
};

CFOptionFlags registeredEvents = kCFStreamEventHasBytesAvailable |
kCFStreamEventErrorOccurred | kCFStreamEventEndEncountered;

if(CFReadStreamSetClient(readStream, registeredEvents, clientCB, &myContext))
{
CFReadStreamScheduleWithRunLoop(readStream, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
}

}

最佳答案

看来您忘记了调用CFReadStreamOpen。

    if(CFReadStreamSetClient(readStream, registeredEvents, clientCB, &myContext))
{
CFReadStreamScheduleWithRunLoop(readStream, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);
}

if (!CFReadStreamOpen(readStream)) {
/* error handling */
}
}

关于iphone - 在运行循环上安排读取流-iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5163863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com