<strike id="mxvdv"><dfn id="mxvdv"></dfn></strike>
<li id="mxvdv"></li>
<dl id="mxvdv"></dl>

        <dl id="mxvdv"><td id="mxvdv"></td></dl>

        藍(lán)鷗旗下品牌:鷗課學(xué)院
        全國(guó)咨詢電話:13152008057
        您的位置: 首頁(yè) > 技術(shù)文章 > 【原創(chuàng)】VR技術(shù)基于ProtoBuf協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)傳輸

        【原創(chuàng)】VR技術(shù)基于ProtoBuf協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)傳輸

        2017-07-13 藍(lán)鷗
        5763人 瀏覽:

        本文由藍(lán)鷗VR/AR/游戲?qū)W科高級(jí)講師原創(chuàng),全篇干貨,深度好文。

        ProtoBuf是Google公司推出的一種二進(jìn)制序列化工具,適用于數(shù)據(jù)的網(wǎng)絡(luò)傳輸?;赟ocket實(shí)現(xiàn)時(shí)時(shí)通信,關(guān)于數(shù)據(jù)粘包的編碼和解碼處理是必不可少的。

        Unity版本:5.3

        使用語(yǔ)言:C# 

        一、Unity中使用ProtoBuf

        實(shí)現(xiàn)功能

        1.基于ProtoBuf序列化對(duì)象

        2.使用Socket實(shí)現(xiàn)時(shí)時(shí)通信

        3.數(shù)據(jù)包的編碼和解碼

        導(dǎo)入DLL到Unity中>>>創(chuàng)建網(wǎng)絡(luò)傳輸?shù)哪P皖?/p>

        QQ截圖20170711110737.jpg

        在Unity中添加測(cè)試腳本,介紹ProtoBuf工具的使用。中間用到了流這個(gè)概念,對(duì)于此概念不熟悉的同學(xué)先去我的簡(jiǎn)書(shū)學(xué)習(xí)。

        2.jpg

        二、Unity中使用Socket實(shí)現(xiàn)時(shí)時(shí)通信

        通信應(yīng)該實(shí)現(xiàn)的功能:

        1.服務(wù)器可以時(shí)時(shí)監(jiān)聽(tīng)多個(gè)客戶端

        2.服務(wù)器可以時(shí)時(shí)監(jiān)聽(tīng)某一個(gè)客戶端消息

        3.服務(wù)器可以時(shí)時(shí)給某一個(gè)客戶端發(fā)消息

        首先我們需要定義一個(gè)客戶端對(duì)象

        3.jpg

        然后實(shí)現(xiàn)我們的服務(wù)器代碼

        4.jpg

        在Unity中開(kāi)啟服務(wù)器,并使用C#控制臺(tái)模擬客戶端連接、發(fā)送消息操作。測(cè)試OK,Unity中可以時(shí)時(shí)監(jiān)聽(tīng)到消息。

        5.jpg

        三、數(shù)據(jù)包的編碼和解碼

        首先,舉個(gè)例子,這個(gè)月信用卡被媳婦刷爆了,面對(duì)房貸車貸的壓力,我只能選擇分期付款。

        那么OK了,現(xiàn)在我想問(wèn)一下,當(dāng)服務(wù)器向客戶端發(fā)送的數(shù)據(jù)過(guò)大時(shí)怎么辦呢?

        當(dāng)服務(wù)器需要向客戶端發(fā)送一條很長(zhǎng)的數(shù)據(jù),也會(huì)“分期付款!”,服務(wù)器會(huì)把一條很長(zhǎng)的數(shù)據(jù)分成若干條小數(shù)據(jù),多次發(fā)送給客戶端。

        可是,這樣就又有另外一個(gè)問(wèn)題,客戶端接受到多條數(shù)據(jù)之后如何解析?

        這里其實(shí)就是客戶端的解碼。server發(fā)數(shù)據(jù)一般采用“長(zhǎng)度+內(nèi)容”的格式,Client接收到數(shù)據(jù)之后,先提取出長(zhǎng)度來(lái),然后根據(jù)長(zhǎng)度判斷內(nèi)容是否發(fā)送完畢。

        再次重申,用戶在發(fā)送序列化好的消息的前,需要先編碼后再發(fā)送消息;用戶在接受消息后,需要解碼之后再解析數(shù)據(jù)(反序列化)。

        6.jpg

        1. 廣告1
        2. 廣告2
        3. 廣告3
        4. 廣告4
        久久人人爽人人爽人人丝袜V,国产黄片在线浏览,猛人精品无码精品在线播放,亚洲色欲久久www

        <strike id="mxvdv"><dfn id="mxvdv"></dfn></strike>
        <li id="mxvdv"></li>
        <dl id="mxvdv"></dl>

            <dl id="mxvdv"><td id="mxvdv"></td></dl>