您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: