Asyncsocket使用-通过委托的方式发送接收的信息

最近开发的项目有用到Asyncsocket框架进行TCP通信,遇到了关于如何将socket接收的信息准确发送给请求对象的问题。例如,对象A调用Socket单例发送了一个请求;于此同时,对象B也调用了该socket单例发送了一个请求;甚至还有对象C等等。当某一时刻,socket单例对象收到了服务器返回的信息,而此时,socket对象如何判断和精准的将该信息发送给相应的请求对象呢?还有就是当服务器返回信息时,当初发送请求的A、B、C等对象是否还存在否?简单的说就是socket单例如何与这些请求对象通信的问题。对象间的通信有协议委托、block、通知等。在此,我给大家推荐通过协议委托的方式实现的通信。主要代码如下:

1、先定义一个用于记录请求对象信息的模型类:

Asyncsocket使用-通过委托的方式发送接收的信息_第1张图片

2、定义socket单例类

Asyncsocket使用-通过委托的方式发送接收的信息_第2张图片


Asyncsocket使用-通过委托的方式发送接收的信息_第3张图片
Asyncsocket使用-通过委托的方式发送接收的信息_第4张图片

3、在- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag回调方法中实现如下代码:

Asyncsocket使用-通过委托的方式发送接收的信息_第5张图片

4、值得注意的是,在socket断开连接后,重新跟服务器建立连接时,需清空代理对象数组。

//断开连接回调

- (void)onSocketDidDisconnect:(AsyncSocket *)sock

{

//删除所有代理对象

[self.delegateArray removeAllObjects];

//重新建立连接

[self socketConnect];

}

你可能感兴趣的:(Asyncsocket使用-通过委托的方式发送接收的信息)