socket第三方库AsyncSocket
2016-02-19 09:28
309 查看
*********
使用第三方库
AsyncSocket.h
AsyncUdpSocket.h
不建立连接的发送数据
AsyncUdpSocket
@interface AsyncUdpSocket : NSObject
- (id)initWithDelegate:(id)delegate
初始化
- (BOOL)bindToPort:(UInt16)port error:(NSError **)errPtr
绑定监听端口
- (void)receiveWithTimeout:(NSTimeInterval)timeout tag:(long)tag
设置监听,当监听到消息时,调用代理方法,在代理方法中也是要写上这一句继续监听的 因为监听到消息后就会停止监听
- (BOOL)sendData:(NSData *)data toHost:(NSString *)host port:(UInt16)port withTimeout:(NSTimeInterval)timeout tag:(long)tag
发送数据
@protocol AsyncUdpSocketDelegate
协议
两个常用
- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port;
接收数据的代理方法
- (void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag
发送成功的代理方法
- (void)onUdpSocket:(AsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error;
发送失败的代理方法
需要手法数据 所以需要两个socket
一个监听接收
一个发送
*********
TCP socket
继续使用asyncsocket 那个第三方库
TCP用下边这个
AsyncSocket.h
**
FOUNDATION_EXPORT Class NSClassFromString(NSString *aClassName);
通过这个方法可以由类名获得类
**
AsyncSocket
用这个类连接 监听 通信
- (BOOL)acceptOnPort:(UInt16)port error:(NSError **)errPtr
绑定端口,绑定之前一般是要初始化和设置代理的
- (void)readDataWithTimeout:(NSTimeInterval)timeout tag:(long)tag
启动端口的监听
- (void)writeData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag
向端口写数据
一般写完 要继续启动读的监听才能继续监听端口发来的数据
- (NSString *)connectedHost
当前socket连接到的host
AsyncSocketDelegate
对应的代理
以下是代理方法:
// 有新的socket向服务器链接自动回调
-(void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket
// 如果下面的方法不写 只能接收一次socket链接
[newSocket readDataWithTimeout:-1 tag:100];
上面这个方法要在每次收到socket的时候调用一次
// 网络连接成功后 自动回调
-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
/ 接收到了数据 自动回调 sock客户端
-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
// 连接断开时 服务器自动回调
-(void)onSocketDidDisconnect:(AsyncSocket *)sock
// 向用户发出的消息 自动回调
-(void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag
使用第三方库
AsyncSocket.h
AsyncUdpSocket.h
不建立连接的发送数据
AsyncUdpSocket
@interface AsyncUdpSocket : NSObject
- (id)initWithDelegate:(id)delegate
初始化
- (BOOL)bindToPort:(UInt16)port error:(NSError **)errPtr
绑定监听端口
- (void)receiveWithTimeout:(NSTimeInterval)timeout tag:(long)tag
设置监听,当监听到消息时,调用代理方法,在代理方法中也是要写上这一句继续监听的 因为监听到消息后就会停止监听
- (BOOL)sendData:(NSData *)data toHost:(NSString *)host port:(UInt16)port withTimeout:(NSTimeInterval)timeout tag:(long)tag
发送数据
@protocol AsyncUdpSocketDelegate
协议
两个常用
- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port;
接收数据的代理方法
- (void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag
发送成功的代理方法
- (void)onUdpSocket:(AsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error;
发送失败的代理方法
需要手法数据 所以需要两个socket
一个监听接收
一个发送
*********
TCP socket
继续使用asyncsocket 那个第三方库
TCP用下边这个
AsyncSocket.h
**
FOUNDATION_EXPORT Class NSClassFromString(NSString *aClassName);
通过这个方法可以由类名获得类
**
AsyncSocket
用这个类连接 监听 通信
- (BOOL)acceptOnPort:(UInt16)port error:(NSError **)errPtr
绑定端口,绑定之前一般是要初始化和设置代理的
- (void)readDataWithTimeout:(NSTimeInterval)timeout tag:(long)tag
启动端口的监听
- (void)writeData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag
向端口写数据
一般写完 要继续启动读的监听才能继续监听端口发来的数据
- (NSString *)connectedHost
当前socket连接到的host
AsyncSocketDelegate
对应的代理
以下是代理方法:
// 有新的socket向服务器链接自动回调
-(void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket
// 如果下面的方法不写 只能接收一次socket链接
[newSocket readDataWithTimeout:-1 tag:100];
上面这个方法要在每次收到socket的时候调用一次
// 网络连接成功后 自动回调
-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
/ 接收到了数据 自动回调 sock客户端
-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
// 连接断开时 服务器自动回调
-(void)onSocketDidDisconnect:(AsyncSocket *)sock
// 向用户发出的消息 自动回调
-(void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag