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.傳輸層 提供端對端的可靠的報文傳遞...