LocalSocketProvider Class Reference

Inherits from NSObject
Conforms to GCDAsyncUdpSocketDelegate
Declared in LocalSocketProvider.h

Overview

本地 UDP Socket 实例封装实用类。

本类提供存取本地UDP Socket通信对象引用的方便方法,封装了 Socket有效性判断以及异常处理等,以便确保调用者通过方法 {@link #getLocalSocket()} 拿到的Socket对象是健康有效的。

依据作者对MobileIMSDK API的设计理念,本类将以单例的形式提供给调用者使用。

@author Jack Jiang(http://www.52im.net/thread-2792-1-1.html)) @version 1.0

+ sharedInstance

获取本类的单例。使用单例访问本类的所有资源是唯一的合法途径。

+ (LocalSocketProvider *)sharedInstance

Discussion

获取本类的单例。使用单例访问本类的所有资源是唯一的合法途径。

Declared In

LocalSocketProvider.h

– resetLocalSocket

重置并新建一个全新的Socket对象。

- (MBGCDAsyncUdpSocket *)resetLocalSocket

Return Value

新建的全新Socket对象引用

Discussion

重置并新建一个全新的Socket对象。

Declared In

LocalSocketProvider.h

– getLocalSocket

获得本地UDPSocket的实例引用.

本方法内封装了Socket有效性判断以及异常处理等,以便确保调用者通过本方法 拿到的Socket对象是健康有效的。

- (MBGCDAsyncUdpSocket *)getLocalSocket

Return Value

如果该实例正常则返回它的引用,否则返回null

Discussion

获得本地UDPSocket的实例引用.

本方法内封装了Socket有效性判断以及异常处理等,以便确保调用者通过本方法 拿到的Socket对象是健康有效的。

Declared In

LocalSocketProvider.h

– setConnectionObserver:

设置UDP Socket连接结果事件观察者. 注意:此回调一旦设置后只会被调用一次,即无论是被"- (void)udpSocket:didConnectToAddress:“还是“- (void)udpSocket:didNotConnect:”调用,都将在调用完成后被置nil.

- (void)setConnectionObserver:(ConnectionCompletion)connObserver

Discussion

设置UDP Socket连接结果事件观察者. 注意:此回调一旦设置后只会被调用一次,即无论是被"- (void)udpSocket:didConnectToAddress:“还是“- (void)udpSocket:didNotConnect:”调用,都将在调用完成后被置nil.

@param networkConnectionLostObserver

Declared In

LocalSocketProvider.h

– tryConnectToHost:withSocket:completion:

尝试连接指定的socket.

UDP是无连接的,此处的连接何解?此处的连接仅是逻辑意义上的操作,实施方法实际动作是进行状态设置等 操作,而带来的方便是每次send数据时就无需再指明主机和端口了.

本框架中,在发送数据前,请首先确保isConnected == YES。

一个注意点是:此connect实际上是异步的,真正意义上能连接上目标主机需等到真正的IMAP包到来。但此机 无需等到异步返回,只需保证coonect从形式上成功即可,即使连接不上主机后绪的QoS保证等机制也会起到错 误告之等。

- (int)tryConnectToHost:(NSError **)errPtr withSocket:(MBGCDAsyncUdpSocket *)skt completion:(ConnectionCompletion)finish

Parameters

errPtr

本参数为Error的地址,本方法执行返回时如有错误产生则不为空,否则为nil

finish

连接结果回调

Return Value

0 表示connect的意图是否成功发出(实际上真正连接是通过异常的delegate方法回来的,不在此方法考虑之列),否则表示错误码

Discussion

尝试连接指定的socket.

UDP是无连接的,此处的连接何解?此处的连接仅是逻辑意义上的操作,实施方法实际动作是进行状态设置等 操作,而带来的方便是每次send数据时就无需再指明主机和端口了.

本框架中,在发送数据前,请首先确保isConnected == YES。

一个注意点是:此connect实际上是异步的,真正意义上能连接上目标主机需等到真正的IMAP包到来。但此机 无需等到异步返回,只需保证coonect从形式上成功即可,即使连接不上主机后绪的QoS保证等机制也会起到错 误告之等。

See Also

Declared In

LocalSocketProvider.h

– isLocalSocketReady

本类中的Socket对象是否是健康的。

- (BOOL)isLocalSocketReady

Return Value

true表示是健康的,否则不是

Discussion

本类中的Socket对象是否是健康的。

Declared In

LocalSocketProvider.h

– closeLocalSocket

强制关闭本地UDP Socket侦听。

一旦调用本方法后,再次调用[LocalSocketProvider getLocalUDPSocket]将会返回一个全新的Socket对象引用。

本方法通常在两个场景下被调用:
1) 真正需要关闭Socket时(如所在的APP通出时);
2) 当调用者检测到网络发生变动后希望重置以便获得健康的Socket引用对象时。

- (void)closeLocalSocket

Discussion

强制关闭本地UDP Socket侦听。

一旦调用本方法后,再次调用[LocalSocketProvider getLocalUDPSocket]将会返回一个全新的Socket对象引用。

本方法通常在两个场景下被调用:
1) 真正需要关闭Socket时(如所在的APP通出时);
2) 当调用者检测到网络发生变动后希望重置以便获得健康的Socket引用对象时。

Declared In

LocalSocketProvider.h