Asyncsocket总结(未完)
方法总结
建立socket
- (id)initWithDelegate:(id)delegate
配置RunLoopModes(不必须)
- 允许你配置 socket 使用的运行循环模式
- 运行循环模式设置默认是NSRunLoopCommonModes
- 如果你想你的socket 在其他模式下继续操作,你可能需要添加模式 NSModalPanelRunLoopMode 或者 NSEventTrackingRunLoopMode ,或者你可能只想使用 NSRunLoopCommonModes
- 可接受的socket将自动 继承相同的运行循环模式就像侦听socket
- 注意:NSRunLoopCommonModes 定义在10.5,对于之前的版本可使用 kCFRunLoopCommonModes
- (BOOL)setRunLoopModes:(NSArray *)runLoopModes
- (BOOL)addRunLoopMode:(NSString *)runLoopMode
- (BOOL)removeRunLoopMode:(NSString *)runLoopMode
-(NSArray *)runLoopModes
服务端启动监听
- (BOOL)acceptOnPort:(UInt16)port error:(NSError **)errPtr
告诉socket开始听取和接受制定端口上的连接,当一个连接到来的时候,AsyncSocket实例将调用各种委托方法,socket将听取所有可用的接口(wifi,以太网等)
客户端连接服务端
1.连接给定的主机和端口,主机hostname可以是域名或者是Ip地址
-(BOOL)connectToHost:(NSString *)hostname onPort:(UInt16)port error :(NSError **)errPtr
2.连接到一个给定的地址
-(BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError *)errPtr;
制定一个sockaddr结构包裹住一个NSData对象,例如,NSData对象从NSNetService的地址方法返回,如果有一个现有的sockaddr结构,可以将它转换到一个NSData对象,像这样:
struct sockaddr sa -> NSData *dsa = [NSData dataWithBytes:&remoteAddr length:remoteAddr.sa_len];
struct sockaddr *sa -> NSData *dsa = [NSData dataWithBytes:remoteAddr length:remoteAddr->sa_len];
代理总结
- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err
- (void)onSocketDidDisconnect:(AsyncSocket *)sock
http://www.cnblogs.com/worldtraveler/archive/2012/12/22/2829067.html