socket第三方库AsyncSocket

*********

使用第三方库

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值