網路程式設計總結 3

2021-06-09 00:29:56 字數 3491 閱讀 1947

iphone的cfnetwork程式設計比較艱深。我選擇使用asyncsocket開源庫來開發,下面介紹一些簡單的使用,並給出我寫的乙個簡單的實現模板,只要新增自己的處理**就可以使用了。

官方**:

一.專案新增asyncsocket

2.把asyncsocket庫原始碼加入專案

3.在專案增加cfnetwork框架

二.功能介紹

1.在需要聯接地方使用connecttohost聯接伺服器

其中initwithdelegate的引數中self是必須。這個物件指標中的各個socket響應的函式將被asyncsocket所呼叫.

asyncsocket = [[asyncsocket alloc] initwithdelegate:self];

nserror *err = nil;

if(![asyncsocket connecttohost:host on:port error:&err])

2.增加socket響應事件

因為initwithdelegate把將當前物件傳遞進去,這樣只要在當前物件方法實現相應方法.

關於nsdata物件

無論socket收發都採用nsdata物件.它的定義是

nsdata主要是帶乙個(id)data指向的資料空間和長度 length.

nsstring 轉換成nsdata 物件

nsdata* xmldata = [@"testdata" datausingencoding:nsutf8stringencoding];

nsdata 轉換成nsstring物件

nsdata * data;

nsstring *result = [[nsstring alloc] initwithdata:data  encoding:nsutf8stringencoding];

3.傳送資料

asyncsocket  writedata    方法來傳送資料,它有如下定義

- (void)writedata:(nsdata *)data withtimeout:(nstimeinterval)timeout tag:(long)tag;

以下是乙個例項語句.

nsdata* adata= [@"test data" datausingencoding: nsutf8stringencoding];

[sock writedata:adata withtimeout:-1 tag:1];

4.接收socket資料.

在onsocket過載函式,有如定義採用是專門用來處理socket的接收資料的.

-(void) onsocket:(asyncsocket *)sock didreaddata:(nsdata *)data withtag:(long)tag

在中間將其轉換成nsstring進行顯示.

nsstring* astr = [[nsstring alloc] initwithdata:data encoding:nsutf8stringencoding];

nslog(@"===%@",astr);

[astr release];

三.實現模板,將直接的**新增進入就可以使用了

#import "asyncsocket.h"

#define theendtag 255

@implementation socketcomm

//初始話,建立socket

- (id) init

return self;

}

//傳送資料

-(void)writedataonmainthread:(id)string

//開啟

- (nsinteger)socketopen:(nsstring*)addr port:(nsinteger)port

return 0;

}

//寫資料

- (nsinteger)socketwrite:(nsstring*)cmd level:(nsinteger)level

else

return 0;

}

//關閉

- (nsinteger)socketclose

return 0;

}

#pragma mark -

#pragma mark delegate

- (void)onsocket:(asyncsocket *)sock willdisconnectwitherror:(nserror *)err

- (void)onsocketdiddisconnect:(asyncsocket *)sock

- (void)onsocket:(asyncsocket *)sock didconnecttohost:(nsstring *)host port:(uint16)port

- (void)onsocket:(asyncsocket *)sock didreaddata:(nsdata *)data withtag:(long)tag

else

[sock readdatawithtimeout:-1 tag:0];

}

- (void)onsocket:(asyncsocket *)sock didwritedatawithtag:(long)tag

@end

網路程式設計3

短連線 長連線inetaddress類 只表示位址 主機 inetsocketaddress類 主機名 埠 netoworkinte ce類 服務端 客戶端 通訊程式設計關注的三件事 提供服務的稱為服務端 連線服務的稱為客戶端 某個類有server serversocket,那麼這個類往往是給服務端...

網路程式設計總結

一 確認網路環境3g wifi 1.新增原始檔和framework 1.1.新增原始檔 在你的程式中使用 reachability 只須將該例程中的 reachability.h 和 reachability.m 拷貝到你的工程中。如下圖 1.2.新增framework 將systemconfigu...

網路程式設計總結

osi分為物理層 資料鏈路層 網路層 傳輸層 會話層 表現層 應用層共七層。1.物理層 通過媒介傳輸位元,確定機械和電氣規範。位元bit 2.資料鏈路層 將位元組裝成幀和點對點的傳遞。幀frame 3.網路層 負責資料報從源到宿的傳遞和網際互聯。包packet 4.傳輸層 提供端對端的可靠的報文傳遞...