評(píng)估你的網(wǎng)絡(luò)需求 <- 網(wǎng)絡(luò)概述

在你選擇網(wǎng)絡(luò)API之前,你應(yīng)該了解一些OS X和iOS提供的網(wǎng)絡(luò)API家族。

OS X和iOS提供三個(gè)主要的用戶空間網(wǎng)絡(luò)API層。前兩個(gè),F(xiàn)oundation和CFNetwork(基于Core Foundation),是針對(duì)OS X和iOS的框架,。最后一個(gè)POSIX層,是和其他類(lèi)UNIX和類(lèi)Linux的操作系統(tǒng)中的網(wǎng)絡(luò)層是一樣的。

在每一層中,都有支持常見(jiàn)網(wǎng)絡(luò)任務(wù)的函數(shù)或類(lèi),例如連接遠(yuǎn)程主機(jī)(流協(xié)議)、下載URL上的內(nèi)容、以及在本地網(wǎng)絡(luò)發(fā)現(xiàn)服務(wù)。這些層都如表2-1所示。

表2-1 OS X和iOS網(wǎng)絡(luò)API的層和家族

流協(xié)議 URL加載 服務(wù)發(fā)現(xiàn)
Foundation 層 NSStream NSURLConnection 和 NSURLRequest NSNetService
Core Foundation 層 CFStream CFHTTPMessage CFNetService
POSIX 層 kqueue libcurl (例如。注意這是第三方API) DNS Service Discovery
POSIX 層 構(gòu)建在BSD套接字(sockets)之上(直接或間接)

你僅使用Foundation類(lèi)就能輕松的完成大多數(shù)客戶端的網(wǎng)絡(luò)任務(wù)。如果你正在寫(xiě)服務(wù)器端的代碼或者你有特殊的需求,你或許想要使用底層級(jí)的框架。但是通常來(lái)說(shuō),你應(yīng)該始終選擇滿足你需求的高級(jí)API。

常見(jiàn)的網(wǎng)絡(luò)任務(wù)

在你決定使用哪個(gè)特定的API之前,你必須首先評(píng)估應(yīng)用程序需要實(shí)現(xiàn)什么網(wǎng)絡(luò)任務(wù)。

支持點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)的游戲。在iOS中,Game Kit框架提供了對(duì)點(diǎn)對(duì)點(diǎn)通信的支持,全球的(通過(guò)網(wǎng)絡(luò))和本地的(使用藍(lán)牙網(wǎng)絡(luò)或Wi-Fi LAN)。

你可以在應(yīng)用中使用Game Kit來(lái)簡(jiǎn)化下面的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)任務(wù):

  • 提供多人游戲網(wǎng)絡(luò)通信
  • 提供音頻通信

除上述兩種任務(wù)以外的點(diǎn)對(duì)點(diǎn)通信,應(yīng)該使用在本部分稍后介紹的低級(jí)別網(wǎng)絡(luò)API來(lái)完成。

更多關(guān)于Game Kit的內(nèi)容,請(qǐng)閱讀Game Center Programming Guide。

支持與其他應(yīng)用的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)。在iOS中,Multipeer Connectivity框架提供對(duì)基礎(chǔ)Wi-Fi的對(duì)點(diǎn)對(duì)點(diǎn)通信、Wi-Fi點(diǎn)對(duì)點(diǎn)、以及藍(lán)牙的支持。更多內(nèi)容,請(qǐng)閱讀Discovering and Advertising Network Services。

連接到web服務(wù)器。接收和發(fā)送短信息的首選方式是通過(guò)類(lèi)似HTTP或HTTPS這樣的標(biāo)準(zhǔn)協(xié)議進(jìn)行的。通過(guò)使用這些現(xiàn)有的協(xié)議,你可以最大程度的減少客戶端與服務(wù)器端連接所需的工作量。HTTP還可以輕松的遷移到安全連接(HTTPS)——你只需要添加一個(gè)證書(shū)到服務(wù)器,并在URL的第一部分添加一個(gè)字母就可以了。

想要學(xué)習(xí)更多關(guān)于制作HTTP和HTTPS請(qǐng)求的API的信息,請(qǐng)閱讀Making HTTP and HTTPS Requests。

想要學(xué)習(xí)如何在應(yīng)用中顯示網(wǎng)頁(yè)內(nèi)容,請(qǐng)閱讀Displaying Web and Multimedia Content。

連接FTP服務(wù)器。除非你必須與現(xiàn)有服務(wù)器保持兼容,否則不要使用FTP。FTP是一種有嚴(yán)重限制并且不安全的(數(shù)據(jù)和密碼通過(guò)明文發(fā)送)舊協(xié)議。

考慮到這點(diǎn),如果你需通過(guò)FTP下載文件,你應(yīng)該使用NSURLConnection API并向它傳遞合適的URL。這個(gè)API是在Making HTTP and HTTPS Requests中描述,但是也能被用于ftp:// URLs。

對(duì)于更復(fù)雜的請(qǐng)求,CFNetwork框架(基于Core Foundation)提供CFFTPStream API與FTP服務(wù)器進(jìn)行通信。CFNetwork還提供CFURLAccess API,它被用于從FTP服務(wù)器上刪除文件。這個(gè)API的詳情超出了本文檔的范圍。想要知道更多,請(qǐng)閱讀CFNetwork Programming Guide。

發(fā)現(xiàn)和公布網(wǎng)絡(luò)服務(wù)。OS X和iOS提供對(duì) DNS Service Discovery(DNS服務(wù)發(fā)現(xiàn))的支持,它允許你描述你的應(yīng)用提供哪些服務(wù),并在用戶的設(shè)備上、附近的設(shè)備上、或者在使用“返回到我的Mac”的用戶的家庭設(shè)備上,發(fā)現(xiàn)其他服務(wù)。然后你可以使用這些信息來(lái)與程序副本、或者與其他程序(你的程序知道如何進(jìn)行通信的程序)進(jìn)行連接。例如,OS X使用 DNS Service Discovery 來(lái)讓用戶找到附近的打印機(jī)、從附近的電腦中找到iTunes中的流音樂(lè)、在Finder中共享屏幕等等。

想要學(xué)習(xí)使用NDS Service Discovery在本地網(wǎng)絡(luò)或遠(yuǎn)程服務(wù)器中發(fā)現(xiàn)服務(wù),請(qǐng)閱讀Discovering and Advertising Network Services。

解析DNS主機(jī)名。OS X和iOS提供Core-Foundation層和POSIX層名字解析API來(lái)獲取主機(jī)名中的IP地址。

想要學(xué)習(xí)這些API,請(qǐng)閱讀Designing for Real-World Networks。但是,如果你正在解析你想要連接到的主機(jī),你通常應(yīng)該使用名稱(chēng)來(lái)連接。閱讀Avoiding Common Networking Mistakes中的Avoid Resolving DNS Names Before Connecting to a Host來(lái)了解為什么。

使用socket或socket流。如果你需要以高級(jí)API不支持的的方式進(jìn)行網(wǎng)絡(luò)請(qǐng)求,你可以使用sockets(POSIX層和Core Foundation 層都有)或者socket流 (在Core Foundation層)。更多信息,請(qǐng)閱讀Using Sockets and Socket Streams。

安全通信。OS X和iOS支持Transport Layer Security (傳輸層安全,TLS)協(xié)議和它的前身 Secure Sockets Layer(安全套接字層,SSL),用來(lái)加密通信,以及服務(wù)器可信度的確定。想要了解更多,閱讀Using Networking Securely。

下一步

現(xiàn)在你已經(jīng)決定了你要做什么,你可以在OS X和iOS中輕松的完成各種各樣的網(wǎng)絡(luò)任務(wù),只需要很少的配置,甚至無(wú)需配置。大多數(shù)常見(jiàn)的網(wǎng)絡(luò)任務(wù)和完成它們推薦的方法將在接下來(lái)的幾章中簡(jiǎn)潔地描述。注意這里不是全面的API討論;每個(gè)章節(jié)的末尾都會(huì)有一個(gè)鏈接,它會(huì)連接到其他一些提供關(guān)于這些任務(wù)更深層信息的文檔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評(píng)論 6 541
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,324評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,018評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,675評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,417評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,783評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,960評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,522評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,267評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,471評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,698評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,099評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,386評(píng)論 1 294
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,204評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,436評(píng)論 2 378

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