iOS之網(wǎng)絡(luò)篇

前言

簡(jiǎn)單介紹:

// OSI(開(kāi)放式系統(tǒng)互聯(lián)), 由ISO(國(guó)際化標(biāo)準(zhǔn)組織)制定

// 1. 應(yīng)用層

// 2. 表示層

// 3. 會(huì)話層

// 4. 傳輸層

// 5. 網(wǎng)絡(luò)層

// 6. 數(shù)據(jù)鏈接層

// 7. 物理層

// TCP/IP, 由美國(guó)國(guó)防部制定

// 1. 應(yīng)用層, HTTP, FTP, SMTP, DNS

// 2. 傳輸層, TCP, UDP

// 3. 網(wǎng)絡(luò)層, IP

// 4. 鏈路層, ARP, RARP

// HTTP(短連接)

// 1. 建立鏈接, 三次握手

// 2. 斷開(kāi)鏈接, 四次揮手

// 數(shù)據(jù)報(bào)文->數(shù)據(jù)包->數(shù)據(jù)幀->比特流(二進(jìn)制)-->比特流->數(shù)據(jù)幀->數(shù)據(jù)包->數(shù)據(jù)報(bào)文

// socket, "插口", "套接字", 長(zhǎng)連接, 存在于應(yīng)用層和傳輸層之間, 提供一種封裝, 方便進(jìn)行通信

UDP、TCP、socket區(qū)別

1. UDP

UDP是一種不可靠的網(wǎng)絡(luò)協(xié)議。(qq用的是這個(gè)協(xié)議)

UDP 是User Datagram Protocol的簡(jiǎn)稱, 中文名是用戶數(shù)據(jù)報(bào)協(xié)議,是 OSI 參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù),IETF RFC 768是UDP的正式規(guī)范。

UDP是OSI參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。UDP 協(xié)議基本上是IP協(xié)議與上層協(xié)議的接口。

UDP協(xié)議的全稱是用戶數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理

UDP協(xié)議的全稱是用戶數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無(wú)連接的協(xié)議。在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層。UDP有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),也就是說(shuō),當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。UDP用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。

與所熟知的TCP(傳輸控制協(xié)議)協(xié)議一樣,UDP協(xié)議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù)OSI(開(kāi)放系統(tǒng)互連)參考模型,UDP和TCP都屬于傳輸層協(xié)議。

UDP協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)包的形式。一個(gè)典型的數(shù)據(jù)包就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)包的前8個(gè)字節(jié)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳輸數(shù)據(jù)。(詳見(jiàn):http://baike.baidu.com/view/30509.htm

2.TCP

TCP:Transmission Control Protocol 傳輸控制協(xié)議TCP是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運(yùn)輸層(Transport layer)通信協(xié)議,由IETF的RFC 793說(shuō)明(specified)。在簡(jiǎn)化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能,UDP是同一層內(nèi)另一個(gè)重要的傳輸協(xié)議。

應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分割成適當(dāng)長(zhǎng)度的報(bào)文段(通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳送單元(MTU)的限制)。之后TCP把結(jié)果包傳給IP層,由它來(lái)通過(guò)網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。TCP為了保證不發(fā)生丟包,就給每個(gè)字節(jié)一個(gè)序號(hào),同時(shí)序號(hào)也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對(duì)已成功收到的字節(jié)發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對(duì)應(yīng)的數(shù)據(jù)(假設(shè)丟失了)將會(huì)被重傳。TCP用一個(gè)校驗(yàn)和函數(shù)來(lái)檢驗(yàn)數(shù)據(jù)是否有錯(cuò)誤;在發(fā)送和接收時(shí)都要計(jì)算和校驗(yàn)。 (詳見(jiàn):http://baike.baidu.com/view/32754.htm

3.socket

socket的英文原義是“孔”或“插座”

客戶軟件將插頭插到不同編號(hào)的插座,就可以得到不同的服務(wù)。

常用的Socket類型

有兩種:流式Socket(SOCK_STREAM)和數(shù)據(jù)報(bào)式Socket(SOCK_DGRAM)。流式是一種面向連接的Socket,針對(duì)于面向連接的TCP服務(wù)應(yīng)用;數(shù)據(jù)報(bào)式Socket是一種無(wú)連接的Socket,對(duì)應(yīng)于無(wú)連接的UDP服務(wù)應(yīng)用。(詳見(jiàn):http://baike.baidu.com/view/13870.htm

http協(xié)議

說(shuō)明:apache tomcat服務(wù)器必須占用8080端口

一、URL

1.基本介紹

URL的全稱是Uniform Resource Locator(統(tǒng)一資源定位符)

通過(guò)1個(gè)URL,能找到互聯(lián)網(wǎng)上唯一的1個(gè)資源

URL就是資源的地址、位置,互聯(lián)網(wǎng)上的每個(gè)資源都有一個(gè)唯一的URL

2.URL中常見(jiàn)的協(xié)議

(1)HTTP

超文本傳輸協(xié)議,訪問(wèn)的是遠(yuǎn)程的網(wǎng)絡(luò)資源,格式是http://

http協(xié)議是在網(wǎng)絡(luò)開(kāi)發(fā)中最常用的協(xié)議

(2)file

訪問(wèn)的是本地計(jì)算機(jī)上的資源,格式是file://(不用加主機(jī)地址)

(3)mailto

訪問(wèn)的是電子郵件地址,格式是mailto:

(4)FTP

訪問(wèn)的是共享主機(jī)的文件資源,格式是ftp://

二、HTTP協(xié)議

1.HTTP協(xié)議簡(jiǎn)介

不管是移動(dòng)客戶端還是PC端,訪問(wèn)遠(yuǎn)程的網(wǎng)絡(luò)資源經(jīng)常使用HTTP協(xié)議

訪問(wèn)百度主頁(yè):http://www.baidu.com

獲得新浪的微博數(shù)據(jù)

獲得大眾點(diǎn)評(píng)的團(tuán)購(gòu)數(shù)據(jù)

2.HTTP協(xié)議的作用

HTTP的全稱是Hypertext Transfer Protocol,超文本傳輸協(xié)議

(1)規(guī)定客戶端和服務(wù)器之間的數(shù)據(jù)傳輸格式

(2)讓客戶端和服務(wù)器能有效地進(jìn)行數(shù)據(jù)溝通

3.為什么選擇使用HTTP?

(1)簡(jiǎn)單快速 ?因?yàn)镠TTP協(xié)議簡(jiǎn)單,所以HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快

(2)靈活 ?HTTP允許傳輸任意類型的數(shù)據(jù)

(3)HTTP 0.9和1.0使用非持續(xù)連接 ?限制每次連接只處理一個(gè)請(qǐng)求,服務(wù)器對(duì)客戶端的請(qǐng)求做出響應(yīng)后,馬上斷開(kāi)連接,這種方式可以節(jié)省傳輸時(shí)間

4.HTTP的通信過(guò)程

要想使用HTTP協(xié)議向服務(wù)器索取數(shù)據(jù),得先了解HTTP通信的完整過(guò)程

完整的http通信可以分為2大步驟

(1)請(qǐng)求:客戶端向服務(wù)器索要數(shù)據(jù)

(2)響應(yīng):服務(wù)器返回客戶端相應(yīng)的數(shù)據(jù)

三、HTTP通信過(guò)程 - 請(qǐng)求和響應(yīng)

1.HTTP通信過(guò)程 - 請(qǐng)求

HTTP協(xié)議規(guī)定:1個(gè)完整的由客戶端發(fā)給服務(wù)器的HTTP請(qǐng)求中包含以下內(nèi)容

請(qǐng)求行:包含了請(qǐng)求方法、請(qǐng)求資源路徑、HTTP協(xié)議版本

GET /MJServer/resources/images/1.jpg HTTP/1.1

請(qǐng)求頭:包含了對(duì)客戶端的環(huán)境描述、客戶端請(qǐng)求的主機(jī)地址等信息

Host: 192.168.1.105:8080// 客戶端想訪問(wèn)的服務(wù)器主機(jī)地址

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9) Firefox/30.0// 客戶端的類型,客戶端的軟件環(huán)境

Accept: text/html, */*// 客戶端所能接收的數(shù)據(jù)類型

Accept-Language: zh-cn// 客戶端的語(yǔ)言環(huán)境

Accept-Encoding: gzip// 客戶端支持的數(shù)據(jù)壓縮格式

請(qǐng)求體:客戶端發(fā)給服務(wù)器的具體數(shù)據(jù),比如文件數(shù)據(jù)

2.HTTP通信過(guò)程 - 響應(yīng)

客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器應(yīng)當(dāng)做出響應(yīng),即返回?cái)?shù)據(jù)給客戶端

HTTP協(xié)議規(guī)定:1個(gè)完整的HTTP響應(yīng)中包含以下內(nèi)容:

狀態(tài)行:包含了HTTP協(xié)議版本、狀態(tài)碼、狀態(tài)英文名稱

HTTP/1.1 200 OK

響應(yīng)頭:包含了對(duì)服務(wù)器的描述、對(duì)返回?cái)?shù)據(jù)的描述

Server: Apache-Coyote/1.1// 服務(wù)器的類型

Content-Type: image/jpeg// 返回?cái)?shù)據(jù)的類型

Content-Length: 56811// 返回?cái)?shù)據(jù)的長(zhǎng)度

Date: Mon, 23 Jun 2014 12:54:52 GMT// 響應(yīng)的時(shí)間

實(shí)體內(nèi)容:服務(wù)器返回給客戶端的具體數(shù)據(jù),比如文件數(shù)據(jù)

3.補(bǔ)充:推薦工具firebug-1.12.5-fx.xpi

蟲子的作用:攔截所有的http請(qǐng)求。

4.常見(jiàn)的響應(yīng)狀態(tài)碼

四、發(fā)送HTTP請(qǐng)求的方法

1.簡(jiǎn)單說(shuō)明

在HTTP/1.1協(xié)議中,定義了8種發(fā)送http請(qǐng)求的方法

GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH

根據(jù)HTTP協(xié)議的設(shè)計(jì)初衷,不同的方法對(duì)資源有不同的操作方式

PUT :增

DELETE :刪

POST:改

GET:查

提示:最常用的是GET和POST(實(shí)際上GET和POST都能辦到增刪改查)

2.get和post請(qǐng)求

要想使用GET和POST請(qǐng)求跟服務(wù)器進(jìn)行交互,得先了解一個(gè)概念:參數(shù)就是傳遞給服務(wù)器的具體數(shù)據(jù),比如登錄時(shí)的帳號(hào)、密碼

GET和POST對(duì)比:GET和POST的主要區(qū)別表現(xiàn)在數(shù)據(jù)傳遞上

GET

在請(qǐng)求URL后面以?的形式跟上發(fā)給服務(wù)器的參數(shù),多個(gè)參數(shù)之間用&隔開(kāi),比如http://ww.test.com/login?username=123&pwd=234&type=JSON

注意:由于瀏覽器和服務(wù)器對(duì)URL長(zhǎng)度有限制,因此在URL后面附帶的參數(shù)是有限制的,通常不能超過(guò)1KB

POST

發(fā)給服務(wù)器的參數(shù)全部放在請(qǐng)求體中

理論上,POST傳遞的數(shù)據(jù)量沒(méi)有限制(具體還得看服務(wù)器的處理能力)

3.GET和POST的選擇

選擇GET和POST的建議

(1)如果要傳遞大量數(shù)據(jù),比如文件上傳,只能用POST請(qǐng)求

(2)GET的安全性比POST要差些,如果包含機(jī)密\敏感信息,建議用POST

(3)如果僅僅是索取數(shù)據(jù)(數(shù)據(jù)查詢),建議使用GET

(4)如果是增加、修改、刪除數(shù)據(jù),建議使用POST

4.iOS中發(fā)送HTTP請(qǐng)求的方案

在iOS中,常見(jiàn)的發(fā)送HTTP請(qǐng)求(GET和POST)的解決方案有

(1)蘋果原生(自帶)

NSURLConnection:用法簡(jiǎn)單,最古老最經(jīng)典最直接的一種方案

NSURLSession:iOS 7新出的技術(shù),功能比NSURLConnection更加強(qiáng)大

CFNetwork:NSURL*的底層,純C語(yǔ)言

(2)第三方框架

ASIHttpRequest:外號(hào)“HTTP終結(jié)者”,功能極其強(qiáng)大,可惜早已停止更新

AFNetworking:簡(jiǎn)單易用,提供了基本夠用的常用功能

建議:

為了提高開(kāi)發(fā)效率,企業(yè)開(kāi)發(fā)用的基本是第三方框架

5.ASI和AFN架構(gòu)對(duì)比

說(shuō)明:AFN基于NSURL,ASI基于CFHTTP,ASI的性能更好一些。但是ASI已經(jīng)沒(méi)有人維護(hù)了,所以一般用AFN。

GET請(qǐng)求和POST請(qǐng)求簡(jiǎn)單說(shuō)明

創(chuàng)建GET請(qǐng)求


//1.設(shè)置請(qǐng)求路徑

NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text];

NSURL *url=[NSURL URLWithString:urlStr];

2.創(chuàng)建請(qǐng)求對(duì)象

NSURLRequest *request=[NSURLRequest requestWithURL:url];

3.發(fā)送請(qǐng)求


服務(wù)器:

創(chuàng)建POST請(qǐng)求


1.設(shè)置請(qǐng)求路徑

NSURL *URL=[NSURL URLWithString:@"http://192.168.1.53:8080/MJServer/login"];//不需要傳遞參數(shù)2.創(chuàng)建請(qǐng)求對(duì)象

NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL];//默認(rèn)為get請(qǐng)求request.timeoutInterval=5.0;//設(shè)置請(qǐng)求超時(shí)為5秒

request.HTTPMethod=@"POST";//設(shè)置請(qǐng)求方法

//設(shè)置請(qǐng)求體

NSString *param=[NSString stringWithFormat:@"username=%@&pwd=%@",self.username.text,self.pwd.text];

//把拼接后的字符串轉(zhuǎn)換為data,設(shè)置請(qǐng)求體

request.HTTPBody=[param dataUsingEncoding:NSUTF8StringEncoding];

//3.發(fā)送請(qǐng)求


服務(wù)器:

二、比較

建議:提交用戶的隱私數(shù)據(jù)一定要使用POST請(qǐng)求

相對(duì)POST請(qǐng)求而言,GET請(qǐng)求的所有參數(shù)都直接暴露在URL中,請(qǐng)求的URL一般會(huì)記錄在服務(wù)器的訪問(wèn)日志中,而服務(wù)器的訪問(wèn)日志是黑客攻擊的重點(diǎn)對(duì)象之一

用戶的隱私數(shù)據(jù)如登錄密碼,銀行賬號(hào)等。

三、使用

1.通過(guò)請(qǐng)求頭告訴服務(wù)器,客戶端的類型(可以通過(guò)修改,欺騙服務(wù)器)


1.設(shè)置請(qǐng)求路徑

NSURL *URL=[NSURL URLWithString:@"http://192.168.1.53:8080/MJServer/login"];//不需要傳遞參數(shù)2.創(chuàng)建請(qǐng)求對(duì)象

NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL];//默認(rèn)為get請(qǐng)求6request.timeoutInterval=5.0;//設(shè)置請(qǐng)求超時(shí)為5秒

request.HTTPMethod=@"POST";//設(shè)置請(qǐng)求方法

//設(shè)置請(qǐng)求體

NSString *param=[NSString stringWithFormat:@"username=%@&pwd=%@",self.username.text,self.pwd.text];

//把拼接后的字符串轉(zhuǎn)換為data,設(shè)置請(qǐng)求體

request.HTTPBody=[param dataUsingEncoding:NSUTF8StringEncoding];

//客戶端類型,只能寫英文

[request setValue:@"ios+android" forHTTPHeaderField:@"User-Agent"];


服務(wù)器:

2.加強(qiáng)對(duì)中文的處理

問(wèn)題:URL不允許寫中文

在GET請(qǐng)求中,相關(guān)代碼段打斷點(diǎn)以驗(yàn)證。

在字符串的拼接參數(shù)中,用戶名使用“文頂頂”.

轉(zhuǎn)換成URL之后整個(gè)變成了空值。

提示:URL里面不能包含中文。

解決:進(jìn)行轉(zhuǎn)碼

1.設(shè)置請(qǐng)求路徑

NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text];

//轉(zhuǎn)碼

urlStr= [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *url=[NSURL URLWithString:urlStr];

2.創(chuàng)建請(qǐng)求對(duì)象

NSURLRequest *request=[NSURLRequest requestWithURL:url];


調(diào)試查看:

服務(wù)器:

說(shuō)明:使用NSURLSession發(fā)送GET和POST請(qǐng)求請(qǐng)參考最新博文:http://www.cnblogs.com/wendingding/p/5168772.html

socket原理

套接字(socket)概念

套接字(socket)是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。它是網(wǎng)絡(luò)通信過(guò)程中端點(diǎn)的抽象表示,包含進(jìn)行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議,本地主機(jī)的IP地址,本地進(jìn)程的協(xié)議端口,遠(yuǎn)地主機(jī)的IP地址,遠(yuǎn)地進(jìn)程的協(xié)議端口。

應(yīng)用層通過(guò)傳輸層進(jìn)行數(shù)據(jù)通信時(shí),TCP會(huì)遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問(wèn)題。多個(gè)TCP連接或多個(gè)應(yīng)用程序進(jìn)程可能需要通過(guò)同一個(gè)

TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了套接字(Socket)接口。應(yīng)用層可以和傳輸層通過(guò)Socket接口,區(qū)分來(lái)自不同應(yīng)用程序進(jìn)程或網(wǎng)絡(luò)連接的通信,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù)。

建立socket連接

建立Socket連接至少需要一對(duì)套接字,其中一個(gè)運(yùn)行于客戶端,稱為ClientSocket,另一個(gè)運(yùn)行于服務(wù)器端,稱為ServerSocket。

套接字之間的連接過(guò)程分為三個(gè)步驟:服務(wù)器監(jiān)聽(tīng),客戶端請(qǐng)求,連接確認(rèn)。

服務(wù)器監(jiān)聽(tīng):服務(wù)器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài),等待客戶端的連接請(qǐng)求。

客戶端請(qǐng)求:指客戶端的套接字提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號(hào),然后就向服務(wù)器端套接字提出連接請(qǐng)求。

連接確認(rèn):當(dāng)服務(wù)器端套接字監(jiān)聽(tīng)到或者說(shuō)接收到客戶端套接字的連接請(qǐng)求時(shí),就響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,雙方就正式建立連接。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽(tīng)狀態(tài),繼續(xù)接收其他客戶端套接字的連接請(qǐng)求。

SOCKET連接與TCP連接

創(chuàng)建Socket連接時(shí),可以指定使用的傳輸層協(xié)議,Socket可以支持不同的傳輸層協(xié)議(TCP或UDP),當(dāng)使用TCP協(xié)議進(jìn)行連接時(shí),該Socket連接就是一個(gè)TCP連接。

3.4、Socket連接與HTTP連接

由于通常情況下Socket連接就是TCP連接,因此Socket連接一旦建立,通信雙方即可開(kāi)始相互發(fā)送數(shù)據(jù)內(nèi)容,直到雙方連接斷開(kāi)。但在實(shí)際網(wǎng)絡(luò)應(yīng)用中,客戶端到服務(wù)器之間的通信往往需要穿越多個(gè)中間節(jié)點(diǎn),例如路由器、網(wǎng)關(guān)、防火墻等,大部分防火墻默認(rèn)會(huì)關(guān)閉長(zhǎng)時(shí)間處于非活躍狀態(tài)的連接而導(dǎo)致Socket 連接斷連,因此需要通過(guò)輪詢告訴網(wǎng)絡(luò),該連接處于活躍狀態(tài)。

而HTTP連接使用的是“請(qǐng)求—響應(yīng)”的方式,不僅在請(qǐng)求時(shí)需要先建立連接,而且需要客戶端向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器端才能回復(fù)數(shù)據(jù)。

很多情況下,需要服務(wù)器端主動(dòng)向客戶端推送數(shù)據(jù),保持客戶端與服務(wù)器數(shù)據(jù)的實(shí)時(shí)與同步。此時(shí)若雙方建立的是Socket連接,服務(wù)器就可以直接將數(shù)據(jù)傳送給客戶端;若雙方建立的是HTTP連接,則服務(wù)器需要等到客戶端發(fā)送一次請(qǐng)求后才能將數(shù)據(jù)傳回給客戶端,因此,客戶端定時(shí)向服務(wù)器端發(fā)送連接請(qǐng)求,不僅可以保持在線,同時(shí)也是在“詢問(wèn)”服務(wù)器是否有新的數(shù)據(jù),如果有就將數(shù)據(jù)傳給客戶端。

https

關(guān)于安全等級(jí)更高的https協(xié)議這里我就不多說(shuō)了,附上兩個(gè)博客地址:

http://www.cocoachina.com/ios/20150702/12384.html

http://www.cnblogs.com/jys509/p/5001566.html

參考博客:

http://www.cnblogs.com/wendingding/p/3813706.html

http://www.cnblogs.com/wendingding/p/3813466.html

http://www.cocoachina.com/bbs/read.php?tid=116559

http://www.2cto.com/kf/201512/455635.html

http://www.mamicode.com/info-detail-877996.html

博主的微博、CocoaChina博客、CSDN博客同步更新,歡迎關(guān)注:

新浪微博:http://weibo.com/p/1005052308506177/home?from=page_100505_profile&wvr=6&mod=data&is_all=1#place

CocoaChina:http://blog.cocoachina.com/477998

CSDN:http://blog.csdn.net/czkyes

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容