1
我是可可/ iOS的新手 - iphone平臺在運行循環上安排讀取流 - iOS
我正在嘗試使用Core Foundations來處理網絡流。我遵循CFNetworking指南,但是我無法得到一個簡單的測試工作。以下編譯和運行,但沒有記錄到NSLog。
我正在向CFReadStreamSetClient提供Callback,clientCB,並在運行循環中調度readStream(至少這是想法)。
我期待着CallBack報告一些事情。
有人能告訴我我要去哪裏嗎?我telnet到這臺服務器,它的工作原理。任何的意見都將會有幫助。
謝謝。
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);
}
}
我正在嘗試..謝謝 – Nick 2011-03-03 22:31:41