<legend id="ysk3n"><sup id="ysk3n"></sup></legend>
<delect id="ysk3n"><meter id="ysk3n"><dl id="ysk3n"></dl></meter></delect>
    <ul id="ysk3n"><meter id="ysk3n"></meter></ul>
  1. 藍(lán)鷗旗下品牌:鷗課學(xué)院
    全國咨詢電話:13152008057
    您的位置: 首頁 > 技術(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)鷗
    5551人 瀏覽:

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

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

    Unity版本:5.3

    使用語言:C# 

    一、Unity中使用ProtoBuf

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

    1.基于ProtoBuf序列化對象

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

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

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

    QQ截圖20170711110737.jpg

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

    2.jpg

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

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

    1.服務(wù)器可以時時監(jiān)聽多個客戶端

    2.服務(wù)器可以時時監(jiān)聽某一個客戶端消息

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

    首先我們需要定義一個客戶端對象

    3.jpg

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

    4.jpg

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

    5.jpg

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

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

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

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

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

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

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

    6.jpg

    1. 廣告1
    2. 廣告2
    3. 廣告3
    4. 廣告4
    欧美性按摩推油在线观看,国产高清视频a在线观看,91色在色在线播放,动漫精品V欧美精品V日韩精品 无码无套少妇毛多69XXX 国产一区二区三区精品porn

    <legend id="ysk3n"><sup id="ysk3n"></sup></legend>
    <delect id="ysk3n"><meter id="ysk3n"><dl id="ysk3n"></dl></meter></delect>
      <ul id="ysk3n"><meter id="ysk3n"></meter></ul>