Asyncsocket

iPhone的標(biāo)準(zhǔn)推薦是CFNetwork 庫變成, 其封裝好的開源庫是 cocoa AsyncSocket 庫, 用它來簡化CFNetwork的調(diào)用, 它提供了異步操作
主要特征有:

  1. 隊(duì)列的非阻塞的讀和寫, 而且可選超時(shí). 你可以調(diào)用它讀取和寫入, 它會(huì)當(dāng)完成后告知你
  2. 自動(dòng)的socket接受. 如果你調(diào)用它接受連接, 它將為每個(gè)連接啟動(dòng)新的實(shí)例, 當(dāng)然, 也可以立即關(guān)閉這些連接
  3. 委托(delegate)支持. 錯(cuò)誤辜限、連接然遏、接受呼盆、完整的讀取秒咐、完整的寫入、進(jìn)度以及斷開連接, 都可以通過委托模式調(diào)用
  4. 基于run loop 的, 而不是線程的. 雖然可以在主線程或者工作線程中使用它, 但你不需要這樣做. 它的異步的調(diào)用委托方法, 使用NSRunloop. 委托方法包括socket的參數(shù), 可讓你在多個(gè)實(shí)例中區(qū)分
    自包含在一個(gè)類中. 你無需操作或者socket, 這個(gè)類幫你做了全部支持IPV4和IPV6的TCP流
    使用
    加入:AsyncSocket.h .m 與AsyncUdpSocket.h .m 四個(gè)文件 及 CFNetworking.framework
#import "AsyncSocket.h"
@interface HelloiPhoneViewController :UIViewController {
    UITextField   *textField;
AsyncSocket *asyncSocket;
}
@property (retain, nonatomic) IBOutlet UITextField *textField;
- (IBAction)buttonPressed:(id)sender;
- (IBAction)textFieldDoneEditing:(id)sender;
@end

在需要連接地方使用connectToHost連接服務(wù)器
其中initWithDelegate的參數(shù)中self是必須. 這個(gè)對(duì)象指針中的各個(gè)Socket響應(yīng)的函數(shù)將被ASuncSocket所調(diào)用. initWithDelegate把將當(dāng)前對(duì)象傳遞進(jìn)去, 這樣只要在當(dāng)前對(duì)象方法實(shí)現(xiàn)響應(yīng)方法

asyncSoket = [[AsyncSocket alloc] initWithDelegate:self];
NSError *error = nil;
if(![asyncSocket connectToHost:host on:port error:&error])
{
   NSLog(@"Error: %@", error);
}

關(guān)于NSData對(duì)象
NSData主要是帶一個(gè)(id)data指向的數(shù)據(jù)空間和長度length

NSString 轉(zhuǎn)換成NSData對(duì)象
NSData xmlData = [@"testdata" dataUsingEncoding:NSUTFStringEncoding];

NSData 轉(zhuǎn)換成NSString 對(duì)象
NSData data;
NSString result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

發(fā)送數(shù)據(jù)
AsyncSocket wrinteData 方法來發(fā)送數(shù)據(jù), 它有如下定義:
-(void)writeData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag;

以下是一個(gè)實(shí)例語句:

NSData *aData = [@"test data" dataUsingEncoding:NSUTF8StringEncoding];
[sock wrinteData:aData withTimeout:-1 tag:1];

在onSocket重載函數(shù), 有如定義采用是專門用來處理SOCKET的發(fā)送數(shù)據(jù)的:

- (void)onSocket(AsyncSocket *)sock didWriteDataWithTag:(long)tag
{
  NSLig(@"thread(%), onSocket:%p didWriteDataWithTag:%d" , [[NSThread currentThread ] name], sock, tag);
}

接受Socket數(shù)據(jù)
在onSocket重載函數(shù), 有如定義采用是專門用來處理SOCKET的接受數(shù)據(jù)的.
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
在中間將其轉(zhuǎn)成NSSTring進(jìn)行顯示
NSString *aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盈简,一起剝皮案震驚了整個(gè)濱河市凑耻,隨后出現(xiàn)的幾起案子太示,更是在濱河造成了極大的恐慌,老刑警劉巖香浩,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件类缤,死亡現(xiàn)場離奇詭異,居然都是意外死亡邻吭,警方通過查閱死者的電腦和手機(jī)餐弱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來囱晴,“玉大人膏蚓,你說我怎么就攤上這事』矗” “怎么了驮瞧?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枯芬。 經(jīng)常有香客問我论笔,道長,這世上最難降的妖魔是什么千所? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任狂魔,我火速辦了婚禮,結(jié)果婚禮上淫痰,老公的妹妹穿的比我還像新娘最楷。我一直安慰自己,他們只是感情好待错,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布籽孙。 她就那樣靜靜地躺著,像睡著了一般朗鸠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上础倍,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天烛占,我揣著相機(jī)與錄音,去河邊找鬼沟启。 笑死忆家,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的德迹。 我是一名探鬼主播芽卿,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胳搞!你這毒婦竟也來了卸例?” 一聲冷哼從身側(cè)響起称杨,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筷转,沒想到半個(gè)月后姑原,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呜舒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年锭汛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袭蝗。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唤殴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出到腥,到底是詐尸還是另有隱情朵逝,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布左电,位于F島的核電站廉侧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏篓足。R本人自食惡果不足惜段誊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栈拖。 院中可真熱鬧连舍,春花似錦、人聲如沸涩哟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贴彼。三九已至潜腻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間器仗,已是汗流浹背融涣。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留精钮,地道東北人威鹿。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像轨香,于是被迫代替她去往敵國和親忽你。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • iPhone的標(biāo)準(zhǔn)推薦是CFNetwork 庫編程臂容,其封裝好的開源庫是 cocoa AsyncSocket庫科雳,用它...
    Ethan_Struggle閱讀 2,237評(píng)論 2 12
  • iPhone的標(biāo)準(zhǔn)推薦是CFNetwork 庫編程根蟹,其封裝好的開源庫是 cocoa AsyncSocket庫,用它...
    夜殤丶夜逝閱讀 4,038評(píng)論 1 23
  • 文章來源:socket編程 - Asyncsocket 大家可以訪問原文,我今天使用到了socket所以轉(zhuǎn)載過來...
    李小爭閱讀 1,684評(píng)論 2 18
  • iPhone的標(biāo)準(zhǔn)推薦是CFNetwork 庫編程炸渡,其封裝好的開源庫是 cocoa AsyncSocket庫娜亿,用它...
    西博爾閱讀 2,566評(píng)論 0 7
  • 1、AsyncSocket介紹 如果需要在項(xiàng)目中像QQ微信一樣做到即時(shí)通訊蚌堵,必須使用socket通訊买决。 iOS中S...
    songsongchen閱讀 1,489評(píng)論 2 5