亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iOS-----簡易地CocoaAsyncSocket使用

2019-11-14 17:54:41
字體:
來源:轉載
供稿:網友

CocoaAsyncSocket使用

代理的.h文件

復制代碼
//GCDAsyncSocketDelegate執行代理對象#import <Foundation/Foundation.h>#import "CocoaAsyncSocket.h"typedef void(^DidReadData)(NSDictionary* didReadData);/** *  GCDAsyncSocketDelegate執行代理對象 */@interface NSObjectGCDAsyncSocket : NSObject<GCDAsyncSocketDelegate>/** *  接收到數據的處理 */@PRoperty(nonatomic,copy)DidReadData didReadData;/** *  發送的數據  如果添加新鍵值則需要先開辟內存 */@property(nonatomic,retain)NSMutableDictionary* writeData;/** *  發送鏈接請求 */-(BOOL)startConnect;/** *  單例 */+(NSObjectGCDAsyncSocket*)defaultSocket;@end
復制代碼

.m文件

復制代碼
////  NSObjectGCDAsyncSocket.m//  attendance#import "NSObjectGCDAsyncSocket.h"@implementation NSObjectGCDAsyncSocket{    GCDAsyncSocket* socket;}/** *  單例 * *  @return */+(NSObjectGCDAsyncSocket *)defaultSocket{    // socket只會實例化一次    static NSObjectGCDAsyncSocket* socket=nil;    // 保證線程安全,defaultSocket只執行一次    static dispatch_once_t once;    dispatch_once(&once, ^    {        socket=[[NSObjectGCDAsyncSocket alloc] init];    });    return socket;}/** *  初始化 * * *  @return self */-(instancetype)init{    self=[super init];    if (self)    {        socket=[[GCDAsyncSocket alloc] initWithDelegate:self                                          delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];    }    return self;}/** *  發送鏈接請求 */-(BOOL)startConnect{    // 先確定斷開連接再開始鏈接    if (socket.isConnected)    {        NSLog(@"主動斷開");        [socket disconnect];            }    NSError* error;    BOOL  isSuccess= [socket connectToHost:SocketHost                                    onPort:SocketPort                                     error:&error];    if (error)    {        NSLog(@"error.localizedDescrGCDAsyncSocketDelegate/** *  鏈接成功 * *  @param sock sock實例 *  @param host IP *  @param port 端口 */-(void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host         port:(uint16_t)port{    //    NSLog(@"%s",__FUNCTION__);//    NSLog(sock.isConnected?@"YES":@"NO");//    if (sock.isConnected)//    { // NSString上傳需要加"/n"分隔符方可上傳成功/* [sock writeData:[@"ABCABCABCABCABCABC/n" dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:0]; *//* NSDictionary* nsDictionaryUser=@{@"gpsinfo":@"Gpsinfo", @"pswd":self.passWord, @"gpstype":@(2015), @"name":self.name, };        NSDictionary* agrement=@{@"vertion":@(1),                                 @"type1":@(2),                                 @"type2":@(0),                                 @"type3":@(0)};*/        if ([NSJSONSerialization isValidJSONObject:self.writeData])        {//            NSLog(@"isValidJSONObject");            NSError* error;            // 先轉NSData再轉NSString是為了保證NSDictionary格式不變            NSData *nsDataUser= [NSJSONSerialization dataWithJSONObject:self.writeData                                                                options:NSJSONWritingPrettyPrinted                                                                  error:&error];            NSString* json=[[NSString alloc] initWithData:nsDataUser                                                 encoding:NSUTF8StringEncoding];//            NSLog(@"nsDictionaryUser:%@",json);                        json=[json stringByReplacingOccurrencesOfString:@"/n"                                                 withString:@""];            json=[json stringByReplacingOccurrencesOfString:@" "                                                 withString:@""];            json=[json stringByAppendingString:@"/n"];//            NSLog(@"json:%@",json);                        [sock writeData:[json dataUsingEncoding:NSUTF8StringEncoding]                withTimeout:-1                        tag:0];                        // 保持讀取的長連接            [sock readDataWithTimeout:-1                                  tag:0];                        if (error)            {                NSLog(@"localizedDescription:%@",[error localizedDescription]);                NSLog(@"localizedFailureReason:%@",[error localizedFailureReason]);            }                    }//    } }/** *  發送數據成功 * *  @param sock  sock實例 *  @param tag  標記sock */-(void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag{//    NSLog(@"didWriteDataWithTag");}/** *  已經獲取到數據 * *  @param sock sock實例 *  @param data 獲取到的數據 *  @param tag  標記sock */-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data      withTag:(long)tag{    //    NSLog(@"%s",__FUNCTION__);    NSError* error=nil;    NSDictionary* json=(NSDictionary*)[NSJSONSerialization JSONObjectWithData:data                                                       options:NSJSONReadingAllowFragments                                                         error:&error];        NSLog([NSJSONSerialization isValidJSONObject:json]?@"is ValidJSONObject":@"is't ValidJSONObject");    if (error)    {        NSLog(@"socketError1:%@",[error localizedDescription]);         NSLog(@"socketError2:%@",[error localizedFailureReason]);    }    self.didReadData(json);    [sock disconnect];    }/** *  鏈接出錯 * *  @param sock sock實例 *  @param err  錯誤參數 */-(void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err{//    NSLog(@"%s",__FUNCTION__);        if (err)    {        NSLog(@"socketDidDisconnect:%@",[err localizedDescription]);        NSLog(@"socketDidDisconnect:%@",[err localizedFailureReason]);    }//    self.didReadData(nil);}@end
復制代碼

使用

創建對象    socket=[NSObjectGCDAsyncSocket defaultSocket];填寫發送的數據socket.writeData=[NSMutableDictionary dictionaryWithDictionary:dictionary];處理收到的數據        socket.didReadData=^(NSDictionary* didReadData){.......}開始鏈接[socket startConnect];添加CocoaAsyncSocket 第三庫 鏈接地址:https://github.com/robbiehanson/CocoaAsyncSocket
轉載自螻蟻之毒

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色综合久久88色综合天天看泰| 亚洲人成电影网站色www| 国产精品jvid在线观看蜜臀| 91豆花精品一区| 一区二区三区国产视频| 另类美女黄大片| 国产精品免费福利| 亚洲成人精品在线| 国产成人精品电影久久久| 8050国产精品久久久久久| 国产免费一区二区三区香蕉精| 国产裸体写真av一区二区| 日本精品久久电影| 亚洲精品视频免费在线观看| 亚洲天堂第二页| 久久久久久久香蕉网| 欧美性生交大片免费| 国产视频亚洲视频| 国产极品jizzhd欧美| 亚洲精品久久7777777| 国产精品激情av电影在线观看| 国产日韩欧美影视| 91久久精品视频| 欧美中文在线视频| 中文字幕av一区| 国产激情视频一区| 97视频在线观看视频免费视频| 亚洲www永久成人夜色| 欧美电影电视剧在线观看| 永久555www成人免费| 欧美大片欧美激情性色a∨久久| 欧美日韩精品在线观看| 中文字幕日韩在线播放| 日韩欧美精品在线观看| 久久亚洲精品网站| 国产精品专区h在线观看| 亚洲春色另类小说| 亚洲欧美国产精品久久久久久久| 久久综合亚洲社区| 国产精品久久久久久久app| 久久免费视频这里只有精品| 国产91色在线免费| 日韩福利在线播放| 国产精品女视频| 91久久嫩草影院一区二区| 欧美国产日韩二区| 日韩一区二区福利| 亚洲国产精品高清久久久| 国产一区二区视频在线观看| 国产91精品久| 亚洲天堂av在线免费观看| 国产精品久久久久久久av大片| 久久久精品国产一区二区| 国产精品久久久久久中文字| 亚洲最大成人网色| 日韩欧美亚洲综合| 国产精品免费久久久久久| 亚洲电影在线观看| 欧美国产日韩二区| 97精品欧美一区二区三区| 欧美香蕉大胸在线视频观看| 国产亚洲欧洲在线| 亚洲国产精品电影| 久久全球大尺度高清视频| 国产免费一区二区三区在线观看| 人人爽久久涩噜噜噜网站| 国产一区二区欧美日韩| 成人免费网站在线看| 欧美丰满少妇xxxx| 成人伊人精品色xxxx视频| 青草青草久热精品视频在线网站| 亚洲国产91精品在线观看| 亚洲少妇激情视频| 精品伊人久久97| 日韩精品视频免费专区在线播放| 不卡在线观看电视剧完整版| 国产在线日韩在线| 日韩最新在线视频| 在线观看日韩www视频免费| 国产91精品不卡视频| 亚洲国产精品嫩草影院久久| 久久精品国产久精国产一老狼| 亚洲专区在线视频| 欧美黑人xxxⅹ高潮交| 亚洲成人黄色网址| 国产精品久久久久久av福利软件| 久久久日本电影| 日韩经典中文字幕在线观看| 国产日韩精品在线播放| 一区二区在线视频播放| 992tv成人免费视频| 久久频这里精品99香蕉| 日韩电影中文字幕一区| 欧美性高潮床叫视频| 国产视频丨精品|在线观看| 国模精品视频一区二区| 亚洲在线www| 欧美精品18videos性欧美| 亚洲美女www午夜| 国产精品国产三级国产专播精品人| 亚洲a级在线观看| 亚洲已满18点击进入在线看片| 亚洲自拍偷拍一区| 欧美专区第一页| 国产91精品视频在线观看| 九九久久久久久久久激情| 日韩在线免费视频观看| 午夜精品久久久久久久99热| 日韩av网站电影| 国产成人亚洲综合91精品| 亚洲三级免费看| 91精品久久久久久久久久久久久久| 国产伦精品免费视频| 色综合天天综合网国产成人网| 日韩欧美在线中文字幕| 欧美极品少妇xxxxⅹ喷水| 欧美视频在线免费看| 国产精品亚洲一区二区三区| 国产成人av在线播放| 亚洲国产成人爱av在线播放| 日韩久久精品电影| 韩国美女主播一区| 97香蕉久久超级碰碰高清版| 日韩欧美极品在线观看| 亚洲久久久久久久久久| 国产v综合v亚洲欧美久久| 久久九九全国免费精品观看| www.xxxx欧美| 91av在线免费观看视频| 国产精品∨欧美精品v日韩精品| 亚洲999一在线观看www| 午夜精品久久久久久99热软件| 亚洲老头老太hd| 91精品国产乱码久久久久久蜜臀| 97久久伊人激情网| 日韩在线视频观看正片免费网站| 欧美成人在线影院| 日韩欧美国产成人| 亚洲免费电影在线观看| 中文字幕综合一区| 色樱桃影院亚洲精品影院| 亚洲精品小视频在线观看| 欧美日韩色婷婷| 国产精品揄拍一区二区| 欧美极品少妇与黑人| 欧美性猛交xxxx偷拍洗澡| 国产精品毛片a∨一区二区三区|国| 精品久久久久久久久久| 亚洲欧美国产日韩天堂区| 日本道色综合久久影院| 日韩av最新在线观看| 欧美精品中文字幕一区| 国产精品无码专区在线观看| 55夜色66夜色国产精品视频| 伊是香蕉大人久久| 国产精品视频免费观看www| 亚洲精品一区二区网址| 久热爱精品视频线路一| 最近2019年中文视频免费在线观看| 欧美在线免费观看| 91性高湖久久久久久久久_久久99| 精品久久久久久久久久久久久| 色天天综合狠狠色| 国内精品久久久|