我用的asyncsocket,用來做智慧型家居wifi通訊方面。
匯入asyncsocket.h, asyncsocket.m, asyncudpsocket.h, asyncudpsocket.m檔案。
2.封裝乙個連線類。
dlssocketconnecttool.h
//
// dlssocketconnecttool.h
// socket
//// created by dev on 16/2/19.
//#import #import "common.h"
@protocol dlssocketconnecttooldelegate @optional
/********************連線上wifi是呼叫*******************/
-(void)didconnect:(asyncsocket *)socket withhost:(nsstring *)host withport:(uint16)port;
/********************斷開連線時呼叫*********************/
-(void)diddisconnect:(asyncsocket *)socket;
/********************傳送命令成功***********************/
-(void)succeedsendmessage:(asyncsocket *)socket;
/********************接收到伺服器返回的資料***************/
-(void)receiveddatawith:(nsdictionary *)dict;
@end
@inte***ce dlssocketconnecttool : nsobject@property(nonatomic,strong)enum userdata;
@property(nonatomic, strong)iddelegate;
/*********************單例*****************************/
+(instancetype)sharesocket;
/*********************連線wifi*************************/
-(void)connectsocket;
/*********************斷開wifi*************************/
-(void)disconnectsocket;
/*********************傳送資料**************************/
-(void)sendmessage:(nsstring *)message;
@end
dlssocketconnecttool.m
//
// dlssocketconnecttool.m
// socket
//// created by dev on 16/2/19.
//#import "dlssocketconnecttool.h"
@inte***ce dlssocketconnecttool()
/** * asyncsocket物件
*/@property(nonatomic, strong)asyncsocket *socket;
/** * 連線超時的定時器
*/@property(nonatomic, strong)nstimer *timeouttimer;
/** * 用於心跳的定時器
*/@property(nonatomic, strong)nstimer *heardtimer;
@end
@implementation dlssocketconnecttool
-(asyncsocket *)socket
return _socket;
}#pragma mark -- 單例
+(instancetype)sharesocket);
return socketconnect;
}#pragma mark -- 連線socket
-(void)connectsocket
self.timeouttimer = [nstimer scheduledtimerwithtimeinterval:2 target:self selector:@selector(canclesocketconnect) userinfo:nil repeats:no];
}//連線超時提醒
-(void)canclesocketconnect
#pragma mark -- 主動斷開連線
-(void)disconnectsocket
#pragma mark -- 傳送資料
-(void)sendmessage:(nsstring *)message
#pragma mark -- asyncsocketdelegate
//連線上wifi時呼叫
- (void)onsocket:(asyncsocket *)sock didconnecttohost:(nsstring *)host port:(uint16)port
//斷開連線時呼叫
- (void)onsocketdiddisconnect:(asyncsocket *)sockelse
}//資料傳送成功時呼叫
- (void)onsocket:(asyncsocket *)sock didwritedatawithtag:(long)tag
//讀取訊息成功時呼叫
- (void)onsocket:(asyncsocket *)sock didreaddata:(nsdata *)data withtag:(long)tag
//心跳檢測長連線
-(void)heardconnecttimer
@end
輔助工具:
dlstranslatestringtodatatool.h 將string型別轉化為nsdata型別
//
// dlstranslatestringtodatatool.m
// socket
//// created by dev on 16/2/19.
//#import "dlstranslatestringtodatatool.h"
@implementation dlstranslatestringtodatatool
#pragma mark -- 十六進製制轉換為nsdata資料流
+ (nsdata *)converthexstrtodata:(nsstring *)str
nsmutabledata *hexdata = [[nsmutabledata alloc] initwithcapacity:8];
nsrange range;
if ([str length] % 2 == 0) else
for (nsinteger i = range.location; i < [str length]; i += 2)
return hexdata;
}@end
Socket程式設計教程
socket程式設計是嵌入式開發的基本功,理解並熟練應用socket是很重要的,一段時間不寫相關的 的難免會有所遺忘,前幾天重寫時回顧了下,找到一篇不錯的教程,分享一下 socket是什麼 套接字有哪些型別 面向連線和無連線的套接字到底有什麼區別 osi網路七層模型簡明教程 tcp ip協議族 ip...
SpringBoot使用 Async非同步呼叫方法
有時間一些比較耗時的方法需要使用非同步呼叫,之前會自己維護乙個執行緒池,然後非同步呼叫,但是在spring環境下可以乙個 async輕鬆搞定。springboot要使用 async需要以下兩個步驟 1.使用 enableasync開啟非同步 2.定義spring元件,使用 component和 as...
async和await的使用
async其實是es7的才有的,是非同步操作的進化,其實就是封裝乙個promise的物件返回 async function test console.log test promiseasync方法在普通的函式前加上 async 關鍵字即可。執行這個函式,發現並沒有返回1111,而是通過promise...