我想在 iPhone 和 PC 之间创建一个 TCP 连接。
所以我正在创建两个 CFStreamRef-s,我想注册我的对象选择器,以便在新字节可供读取时调用。
正如我从上面的链接中了解到的那样,我可以为这样的读取流注册一个函数
CFReadStreamSetClient(myReadStream, registeredEvents, myCallBack, &myContext)
我可以像这样注册我的对象的选择器吗?
我想在 iPhone 和 PC 之间创建一个 TCP 连接。
所以我正在创建两个 CFStreamRef-s,我想注册我的对象选择器,以便在新字节可供读取时调用。
正如我从上面的链接中了解到的那样,我可以为这样的读取流注册一个函数
CFReadStreamSetClient(myReadStream, registeredEvents, myCallBack, &myContext)
我可以像这样注册我的对象的选择器吗?
查看这个异步套接字网络库:
http://code.google.com/p/cocoaasyncsocket/
AsyncSocket 是 CFSocket 和 CFStream 的面向对象的包装器,支持 TCP 和 UDP。
要在 iPhone 和 PC 之间建立 TCP 连接,请参阅此链接
http://xmppframework.googlecode.com。
它实际上是为mac开发的,还有一个iPhone版本,请仔细看一遍。
CFReadStreamRef 只是一个 NSInputStream。
-(void) tryToConnect
{
CFReadStreamRef myReadStream = NULL;
CFWriteStreamRef myWriteStream = NULL;
// Create socket.
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,
(CFStringRef) ip_,
port_,
&myReadStream,
&myWriteStream);
//TODO: check if everything is ok
readStream_ = (NSInputStream*) myReadStream;
writeStream_ = (NSOutputStream*) myWriteStream;
[readStream_ setDelegate:self]; //register to get events
[readStream_ scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[readStream_ open];
[writeStream_ open];
[self sendSomething];
}
您需要做的就是实施NSStreamDelegate