YINSocket
基于 GCDAsyncSocket 封装,控制心跳
typedef enum : NSUInteger { YINSocketEventConnectSucceed,//连接成功 / 有新的客户端连接 YINSocketEventConnectError,//断开连接 / 有客户端断开连接 YINSocketEventRecive,//收到消息 } YINSocketEventStatus;
typedef void(^YINSocketEventBlock)(YINSocketEventStatus status,id socket,NSString *message);
@interface YINSocket : NSObject
//客户端主动断开连接 tcp udp通用
- (void)close;
//---------------tcp 面向连接的 socket---------------
//初始化一个客户端 app 开发一般只需要 socket 客户端
- (instancetype)tcpSocket;
//设置断开自动重连次数 默认为 5 如果五次连接都失败,则触发 YINSocketEventConnectError @property(nonatomic,assign)NSInteger autoConnect;
//连接服务端 host 可以是网络解析地址,不需要传 port。如果是 ip 需要传 host 和 port
- (BOOL)tcpConnectToHost:(NSString *)host onPort:(NSString *)port eventBlock:(YINSocketEventBlock)block;
//向服务端发送消息
- (void)tcpSendToService:(NSString *)str;
//初始化一个服务端 一些特殊的 p2p 需求 要用 app 作为服务端
- (instancetype)tcpSocketService;
//已连接的所有客户端 @property(nonatomic,strong,readonly)NSMutableArray<GCDAsyncSocket *> *tcpClients;
//服务端开启一个端口用于监听事件
- (BOOL)tcpAcceptOnPort:(NSString *)port eventBlock:(YINSocketEventBlock)block;
//服务端向客户端发送消息,client 为 nil 为广播
- (void)tcpSendDataString:(NSString *)str toClient:(GCDAsyncSocket *)client;
//服务端主动断开客户端 nil 为断开所有连接
- (void)tcpCloseTcpClient:(GCDAsyncSocket *)client;
//---------------udp 非连接的 socket 也可以连接---------------
- (instancetype)udpSocket;
//开启端口 可以接收 udp 消息
- (BOOL)udpBindOnPort:(NSString *)port eventBlock:(YINSocketEventBlock)block;
//向 ip 发送消息 ip 要加端口号
- (void)udpSendDataStr:(NSString *)str toIP:(NSString *)ip;
//连接一个地址。如果连接,则只能发送和接收此地址的消息 一般情况使用 udp 都是非连接
- (BOOL)udpConnectToHost:(NSString *)host onPort:(NSString *)port;
/////加入一个组 发送消息时组内所有成员都能收到消息 需要传一个 ip 不需要端口 //- (BOOL)udpJoinGroup:(NSString *)ip; @end