成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

android協(xié)議,安卓協(xié)議框架

Android頁(yè)面跳轉(zhuǎn)協(xié)議_URL Scheme詳解

android中的scheme是一種頁(yè)面內(nèi)跳轉(zhuǎn)協(xié)議,是一種非常好的實(shí)現(xiàn)機(jī)制,通過(guò)定義自己的scheme協(xié)議,可以非常方便跳轉(zhuǎn)app中的各個(gè)頁(yè)面;通過(guò)scheme協(xié)議,服務(wù)器可以定制化告訴App跳轉(zhuǎn)那個(gè)頁(yè)面,可以通過(guò)通知欄消息定制化跳轉(zhuǎn)頁(yè)面,可以通過(guò)H5頁(yè)面跳轉(zhuǎn)頁(yè)面等。

創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)蒼梧,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575

客戶端應(yīng)用可以在服務(wù)端注冊(cè)一個(gè)URL Scheme,該Scheme用于從瀏覽器或其他應(yīng)用啟動(dòng)本應(yīng)用。通過(guò)指定的URL字段,可以讓應(yīng)用在被調(diào)起后直接打開某些特定界面,比如商品詳情頁(yè),活動(dòng)詳情頁(yè)等。也可以執(zhí)行某些特定的動(dòng)作,如完成支付等。也可以在應(yīng)用內(nèi)通過(guò)html頁(yè)來(lái)直接調(diào)用顯示app內(nèi)的某個(gè)界面。綜上URL Schema使用場(chǎng)景大致分以下幾種:

一個(gè)完整的Scheme的協(xié)議格式由 scheme、userInfo、host、port、path、query和fragment 組成。結(jié)構(gòu)如下:

scheme://是固定的格式。userInfo@ 可以省略,host 是必須的。port 、query 和 fragment 也是可以省略的。

其中scheme既可以是Android已經(jīng)定義好的協(xié)議,也可使用我們自定義的。Android 常見的scheme 協(xié)議有:content 、file、http 等。如果我們自定義協(xié)議就可以隨意使用一些字符串來(lái)限定協(xié)議。當(dāng)然最好是有一定含義的字符串。如下面的協(xié)議:

首先配置需要跳轉(zhuǎn)的Activity,Mainifest文件配置如下:

SchemeActivity

在網(wǎng)頁(yè)中調(diào)用:

運(yùn)行結(jié)果如下:

其他運(yùn)用方式都基于樣例,源碼地址: URL_SchemeDemo

Android 網(wǎng)絡(luò)基礎(chǔ)之網(wǎng)絡(luò)協(xié)議篇

學(xué)習(xí)一門技術(shù)或者看一篇文章最好的方式就是帶著問題去學(xué)習(xí),這樣才能在過(guò)程中有茅塞頓開、燈火闌珊的感覺,記憶也會(huì)更深刻。

對(duì)于網(wǎng)絡(luò)的分層,有的分為七層,有的分為四層,而我認(rèn)為五層模型是最容易理解的網(wǎng)絡(luò)模型。

如上圖所示,從上往下依次為應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈接層、實(shí)體層。

越往上,就越靠近用戶;越往下,則越靠近硬件。

大家都遵守的規(guī)則,就叫做"協(xié)議"(protocol)。

互聯(lián)網(wǎng)的每一層,都定義了很多協(xié)議。這些協(xié)議的總稱,就叫做"互聯(lián)網(wǎng)協(xié)議"(Internet Protocol Suite),它們是互聯(lián)網(wǎng)的核心。

我們從最下面一層開始分析,電腦要聯(lián)網(wǎng),第一件事要做什么?就是用電纜、光纜、雙絞線等方式將電腦連接起來(lái),這就是實(shí)體層。

實(shí)體層就是就是把電腦連接起來(lái)的物理手段。它主要規(guī)定了網(wǎng)絡(luò)的一些電氣特性,作用是負(fù)責(zé)傳送 0 和 1 的電信號(hào)。

"鏈接層"在"實(shí)體層"的上方,確定了 0 和 1 的分組方式。(多少個(gè)電信號(hào)算一組?每個(gè)信號(hào)位有何意義?)

以太網(wǎng)規(guī)定,一組電信號(hào)構(gòu)成一個(gè)數(shù)據(jù)包,叫做"幀"(Frame)。每一幀分成兩個(gè)部分:標(biāo)頭(Head)和數(shù)據(jù)(Data)。

"標(biāo)頭"包含數(shù)據(jù)包的一些說(shuō)明項(xiàng),比如發(fā)送者、接受者、數(shù)據(jù)類型等等;"數(shù)據(jù)"則是數(shù)據(jù)包的具體內(nèi)容。

"標(biāo)頭"的長(zhǎng)度,固定為 18 字節(jié)。"數(shù)據(jù)"的長(zhǎng)度,最短為 46 字節(jié),最長(zhǎng)為 1500 字節(jié)。因此,整個(gè)"幀"最短為 64 字節(jié),最長(zhǎng)為 1518 字節(jié)。如果數(shù)據(jù)很長(zhǎng),就必須分割成多個(gè)幀進(jìn)行發(fā)送。

以太網(wǎng)規(guī)定,連入網(wǎng)絡(luò)的所有設(shè)備,都必須具有"網(wǎng)卡"接口。數(shù)據(jù)包必須是從一塊網(wǎng)卡,傳送到另一塊網(wǎng)卡。網(wǎng)卡的地址,就是數(shù)據(jù)包的發(fā)送地址和接收地址,這叫做 MAC 地址。

每塊網(wǎng)卡出廠的時(shí)候,都有一個(gè)全世界獨(dú)一無(wú)二的 MAC 地址,長(zhǎng)度是 48 個(gè)二進(jìn)制位,通常用 12 個(gè)十六進(jìn)制數(shù)表示。

前 6 個(gè)十六進(jìn)制數(shù)是廠商編號(hào),后 6 個(gè)是該廠商的網(wǎng)卡流水號(hào)。有了 MAC 地址,就可以定位網(wǎng)卡和數(shù)據(jù)包的路徑了。

以太網(wǎng)采用了一種很"原始"的方式,它不是把數(shù)據(jù)包準(zhǔn)確送到接收方,而是向本網(wǎng)絡(luò)內(nèi)所有計(jì)算機(jī)發(fā)送,讓每臺(tái)計(jì)算機(jī)自己判斷,是否為接收方。

同一個(gè)子網(wǎng)絡(luò)的計(jì)算機(jī)都會(huì)收到這個(gè)包。它們讀取這個(gè)包的"標(biāo)頭",找到接收方的 MAC 地址,然后與自身的 MAC 地址相比較,如果兩者相同,就接受這個(gè)包,做進(jìn)一步處理,否則就丟棄這個(gè)包。這種發(fā)送方式就叫做"廣播"(broadcasting)。

有了數(shù)據(jù)包的定義、網(wǎng)卡的 MAC 地址、廣播的發(fā)送方式,"鏈接層"就可以在多臺(tái)計(jì)算機(jī)之間傳送數(shù)據(jù)了。

以太網(wǎng)協(xié)議,依靠 MAC 地址發(fā)送數(shù)據(jù)。這樣做有一個(gè)重大的缺點(diǎn)。以太網(wǎng)采用廣播方式發(fā)送數(shù)據(jù)包,如果兩臺(tái)計(jì)算機(jī)不在同一個(gè)子網(wǎng)絡(luò),廣播是傳不過(guò)去的。這種設(shè)計(jì)是合理的,否則互聯(lián)網(wǎng)上每一臺(tái)計(jì)算機(jī)都會(huì)收到所有包,那會(huì)引起災(zāi)難。

因此,必須找到一種方法,能夠區(qū)分哪些 MAC 地址屬于同一個(gè)子網(wǎng)絡(luò),哪些不是。如果是同一個(gè)子網(wǎng)絡(luò),就采用廣播方式發(fā)送,否則就采用"路由"方式發(fā)送。("路由"的意思,就是指如何向不同的子網(wǎng)絡(luò)分發(fā)數(shù)據(jù)包)

“網(wǎng)絡(luò)層”的作用是引進(jìn)一套新的地址,使得我們能夠區(qū)分不同的計(jì)算機(jī)是否屬于同一個(gè)子網(wǎng)絡(luò)。這套地址就叫做"網(wǎng)絡(luò)地址",簡(jiǎn)稱"網(wǎng)址"。

"網(wǎng)絡(luò)層"出現(xiàn)以后,每臺(tái)計(jì)算機(jī)有了兩種地址,一種是 MAC 地址,另一種是網(wǎng)絡(luò)地址。網(wǎng)絡(luò)地址幫助我們確定計(jì)算機(jī)所在的子網(wǎng)絡(luò),MAC 地址則將數(shù)據(jù)包送到該子網(wǎng)絡(luò)中的目標(biāo)網(wǎng)卡。因此,從邏輯上可以推斷,必定是先處理網(wǎng)絡(luò)地址,然后再處理 MAC 地址。

規(guī)定網(wǎng)絡(luò)地址的協(xié)議,叫做 IP 協(xié)議。它所定義的地址,就被稱為 IP 地址。習(xí)慣上,我們用分成四段的十進(jìn)制數(shù)表示IP地址,從 0.0.0.0 一直到 255.255.255.255。

IP 地址的前一部分代表網(wǎng)絡(luò),后一部分代表主機(jī)。比如,IP 地址 172.16.254.1,這是一個(gè) 32 位的地址,假定它的網(wǎng)絡(luò)部分是前 24 位(172.16.254),那么主機(jī)部分就是后 8 位(最后的那個(gè)1)。處于同一個(gè)子網(wǎng)絡(luò)的電腦,它們 IP 地址的網(wǎng)絡(luò)部分必定是相同的,也就是說(shuō) 172.16.254.2 應(yīng)該與 172.16.254.1 處在同一個(gè)子網(wǎng)絡(luò)。

但是,問題在于單單從 IP 地址,我們無(wú)法判斷網(wǎng)絡(luò)部分。還是以 172.16.254.1 為例,它的網(wǎng)絡(luò)部分,到底是前 24 位,還是前 16 位,甚至前 28 位,從 IP 地址上是看不出來(lái)的。

"子網(wǎng)掩碼" ,就是表示子網(wǎng)絡(luò)特征的一個(gè)參數(shù)。它在形式上等同于 IP 地址,也是一個(gè) 32 位二進(jìn)制數(shù)字,它的網(wǎng)絡(luò)部分全部為 1,主機(jī)部分全部為 0。比如,IP 地址 172.16.254.1,如果已知網(wǎng)絡(luò)部分是前 24 位,主機(jī)部分是后 8 位,那么子網(wǎng)絡(luò)掩碼就是 11111111.11111111.11111111.00000000,寫成十進(jìn)制就是 255.255.255.0。

知道 "子網(wǎng)掩碼" ,我們就能判斷,任意兩個(gè) IP 地址是否處在同一個(gè)子網(wǎng)絡(luò)。方法是將兩個(gè) IP 地址與子網(wǎng)掩碼分別進(jìn) 行 AND 運(yùn)算(兩個(gè)數(shù)位都為 1,運(yùn)算結(jié)果為 1,否則為 0),然后比較結(jié)果是否相同,如果是的話,就表明它們?cè)谕粋€(gè)子網(wǎng)絡(luò)中,否則就不是。

因?yàn)?IP 數(shù)據(jù)包是放在以太網(wǎng)數(shù)據(jù)包里發(fā)送的,所以我們必須同時(shí)知道兩個(gè)地址,一個(gè)是對(duì)方的 MAC 地址,另一個(gè)是對(duì)方的 IP 地址。通常情況下,對(duì)方的IP地址是已知的(后文會(huì)解釋),但是我們不知道它的 MAC 地址。

所以,我們需要一種機(jī)制,能夠從 IP 地址得到 MAC 地址。

這里又可以分成兩種情況。第一種情況,如果兩臺(tái)主機(jī)不在同一個(gè)子網(wǎng)絡(luò),那么事實(shí)上沒有辦法得到對(duì)方的 MAC 地址,只能把數(shù)據(jù)包傳送到兩個(gè)子網(wǎng)絡(luò)連接處的"網(wǎng)關(guān)"(gateway),讓網(wǎng)關(guān)去處理。

第二種情況,如果兩臺(tái)主機(jī)在同一個(gè)子網(wǎng)絡(luò),那么我們可以用 ARP 協(xié)議,得到對(duì)方的 MAC 地址。ARP 協(xié)議也是發(fā)出一個(gè)數(shù)據(jù)包(包含在以太網(wǎng)數(shù)據(jù)包中),其中包含它所要查詢主機(jī)的IP地址,在對(duì)方的 MAC 地址這一欄,填的是 FF:FF:FF:FF:FF:FF,表示這是一個(gè)"廣播"地址。它所在子網(wǎng)絡(luò)的每一臺(tái)主機(jī),都會(huì)收到這個(gè)數(shù)據(jù)包,從中取出 IP 地址,與自身的 IP 地址進(jìn)行比較。如果兩者相同,都做出回復(fù),向?qū)Ψ綀?bào)告自己的 MAC 地址,否則就丟棄這個(gè)包。

有了 ARP 協(xié)議之后,我們就可以得到同一個(gè)子網(wǎng)絡(luò)內(nèi)的主機(jī) MAC 地址,可以把數(shù)據(jù)包發(fā)送到任意一臺(tái)主機(jī)之上了。

"端口"(port) 表示這個(gè)數(shù)據(jù)包到底供哪個(gè)程序(進(jìn)程)使用。

"傳輸層"的功能,就是建立"端口到端口"的通信。相比之下,"網(wǎng)絡(luò)層"的功能是建立"主機(jī)到主機(jī)"的通信。只要確定主機(jī)和端口,我們就能實(shí)現(xiàn)程序之間的交流。

在數(shù)據(jù)包中加入端口信息,這就需要新的協(xié)議。最簡(jiǎn)單的實(shí)現(xiàn)叫做 UDP 協(xié)議,它的格式幾乎就是在數(shù)據(jù)前面,加上端口號(hào)。

UDP 數(shù)據(jù)包,也是由"標(biāo)頭"和"數(shù)據(jù)"兩部分組成。

"標(biāo)頭"部分主要定義了發(fā)出端口和接收端口,"數(shù)據(jù)"部分就是具體的內(nèi)容。

UDP 數(shù)據(jù)包非常簡(jiǎn)單,"標(biāo)頭"部分一共只有8個(gè)字節(jié),總長(zhǎng)度不超過(guò) 65,535 字節(jié),正好放進(jìn)一個(gè) IP 數(shù)據(jù)包。

UDP 協(xié)議的優(yōu)點(diǎn)是比較簡(jiǎn)單,容易實(shí)現(xiàn),但是缺點(diǎn)是可靠性較差,一旦數(shù)據(jù)包發(fā)出,無(wú)法知道對(duì)方是否收到。

為了解決這個(gè)問題,提高網(wǎng)絡(luò)可靠性,TCP 協(xié)議就誕生了。這個(gè)協(xié)議非常復(fù)雜,但可以近似認(rèn)為,它就是有確認(rèn)機(jī)制的 UDP 協(xié)議,每發(fā)出一個(gè)數(shù)據(jù)包都要求確認(rèn)。如果有一個(gè)數(shù)據(jù)包遺失,就收不到確認(rèn),發(fā)出方就知道有必要重發(fā)這個(gè)數(shù)據(jù)包了。

因此,TCP 協(xié)議能夠確保數(shù)據(jù)不會(huì)遺失。它的缺點(diǎn)是過(guò)程復(fù)雜、實(shí)現(xiàn)困難、消耗較多的資源。

TCP 數(shù)據(jù)包和 UDP 數(shù)據(jù)包一樣,都是內(nèi)嵌在 IP 數(shù)據(jù)包的"數(shù)據(jù)"部分。TCP 數(shù)據(jù)包沒有長(zhǎng)度限制,理論上可以無(wú)限長(zhǎng),但是為了保證網(wǎng)絡(luò)的效率,通常 TCP 數(shù)據(jù)包的長(zhǎng)度不會(huì)超過(guò)IP數(shù)據(jù)包的長(zhǎng)度,以確保單個(gè) TCP 數(shù)據(jù)包不必再分割。

"應(yīng)用層"的作用,就是規(guī)定應(yīng)用程序的數(shù)據(jù)格式。

舉例來(lái)說(shuō),TCP 協(xié)議可以為各種各樣的程序傳遞數(shù)據(jù),比如 Email、WWW、FTP 等等。那么,必須有不同協(xié)議規(guī)定電子郵件、網(wǎng)頁(yè)、FTP 數(shù)據(jù)的格式,這些應(yīng)用程序協(xié)議就構(gòu)成了"應(yīng)用層"。

[圖片上傳失敗...(image-ebc671-1558268545157)]

至此,整個(gè)互聯(lián)網(wǎng)的五層結(jié)構(gòu),自下而上全部講完了。

文章已經(jīng)讀到末尾了,不知道最初的幾個(gè)問題你都會(huì)了嗎?如果不會(huì)的話?可以再針對(duì)不會(huì)的問題進(jìn)行精讀哦!答案都在文中,相信你肯定可以解決的!

Android 利用scheme協(xié)議進(jìn)行跳轉(zhuǎn)

什么是 URL Scheme?

轉(zhuǎn)自:

稍稍記錄一下

android中的scheme是一種頁(yè)面內(nèi)跳轉(zhuǎn)協(xié)議。

通過(guò)定義自己的scheme協(xié)議,可以非常方便跳轉(zhuǎn)app中的各個(gè)頁(yè)面;

通過(guò)scheme協(xié)議,服務(wù)器可以定制化告訴App跳轉(zhuǎn)到APP內(nèi)部頁(yè)面。

之前項(xiàng)目都是我們客戶端和服務(wù)器端用自定義json串的形式來(lái)告訴客戶端如何跳轉(zhuǎn),這種方式要手動(dòng)解析字段,有點(diǎn)麻煩。然而scheme協(xié)議自帶字段解析,非常之方便,后面我們就放棄了json解析的方式。

Scheme協(xié)議在Android中使用場(chǎng)景

H5跳轉(zhuǎn)到native頁(yè)面

客戶端獲取push消息中后,點(diǎn)擊消息跳轉(zhuǎn)到APP內(nèi)部頁(yè)面

APP根據(jù)URL跳轉(zhuǎn)到另外一個(gè)APP指定頁(yè)面

利用scheme協(xié)議跳轉(zhuǎn)的一個(gè)完整實(shí)例

在Mainefest配置文件中配置需要用scheme協(xié)議跳轉(zhuǎn)的Activity

模擬從網(wǎng)絡(luò)中獲取scheme協(xié)議的url

獲取scheme協(xié)議參數(shù)

分享題目:android協(xié)議,安卓協(xié)議框架
分享路徑:http://jinyejixie.com/article26/dseccjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、搜索引擎優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)站制作App設(shè)計(jì)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
伽师县| 兴宁市| 门头沟区| 阳春市| 乃东县| 房山区| 乌苏市| 盐边县| 怀远县| 武强县| 清新县| 嘉善县| 镇坪县| 安达市| 芦山县| 丰城市| 南江县| 景洪市| 晋州市| 金山区| 谷城县| 天全县| 云龙县| 西昌市| 隆尧县| 囊谦县| 景谷| 通道| 大埔区| 佛坪县| 安龙县| 玉林市| 东阿县| 南汇区| 格尔木市| 纳雍县| 平远县| 建湖县| 边坝县| 西平县| 东丽区|