日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android Protobuf 序列化】Protobuf 服务器与客户端通信 ( TCP 通信中使用 Protobuf )

發(fā)布時間:2025/6/17 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android Protobuf 序列化】Protobuf 服务器与客户端通信 ( TCP 通信中使用 Protobuf ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、TCP 粘包和分包
  • 二、TCP 粘包和分包解決方案
  • 三、客戶端 Android 應用使用 Protobuf
  • 四、服務器端 Java 服務器使用 Protobuf
  • 五、參考資料





一、TCP 粘包和分包



TCP 傳輸中的 粘包 和 分包 情況 :

分包 : 發(fā)送的數據量過大 , 大于 TCP 發(fā)送緩沖區(qū)的剩余空間 , 則產生分包 ; 發(fā)送的數據量大于 TCP 最大報文長度 , 也會產生分包 ;

粘包 : 發(fā)送的數據量過小 , 小于 TCP 發(fā)送緩沖區(qū)剩余空間大小 , TCP 機制會將多次寫入緩沖區(qū)的數據 , 一次性發(fā)送出去 , 這樣就產生了粘包的情況 ; 接收端如果沒有及時讀取接收緩沖區(qū)中的數據 , 也會造成粘包情況 ;

TCP 開發(fā)中 , 粘包和分包是必然出現的 , 無法避免 ;





二、TCP 粘包和分包解決方案



包頭定義長度 : 定義數據包的包頭信息 , 在包頭中定義數據包長度 , 這樣就知道當前包的大小 , 接收到數據包以后 , 就可以知道該數據報是否是完整的包 , 是否有粘包 , 分包的情況 ;

數據包首尾邊界 : 在數據包前后加上包頭標識 和 包尾標識 , 為數據包添加邊界 ;





三、客戶端 Android 應用使用 Protobuf



參考 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 序列化 | Protobuf 反序列化 ) 博客進行開發(fā) ;





四、服務器端 Java 服務器使用 Protobuf



編寫 Java 服務器端軟件 , 使用 eclipse 或 IntelliJ IDEA 開發(fā)環(huán)境 , 將 Android Studio 中使用的 Protobuf 源文件拷貝到服務器端環(huán)境中 , 使用 protoc 進行手動編譯 ;

【Android Protobuf 序列化】Protobuf 使用 ( protoc 編譯器簡介 | 下載 protoc 編譯器 | 使用 protoc 編譯器編譯 .proto 源文件 )

也可以參考 Protobuf Java 語言對應用法 : https://developers.google.com/protocol-buffers/docs/javatutorial 文檔 , 使用 Gradle 插件進行自動編譯 ;


服務器端軟件開發(fā)參考

BIO 網絡編程參考 : 【Java 網絡編程】TCP 數據傳輸示例 ( 客戶端參數設置 | 服務器端參數設置 | ByteBuffer 存放讀取數據類型 )

NIO 網絡編程參考 : 【Netty】NIO 網絡編程 聊天室案例

Netty 網絡編程參考 : 【Netty】Netty 入門案例分析 ( Netty 模型解析 | Netty 服務器端代碼 | Netty 客戶端代碼 )


懶得寫了 , 就這樣吧 , 都超級簡單的原理 ;





五、參考資料



Protobuf 參考資料 :

  • Protobuf 官網主頁 : https://developers.google.com/protocol-buffers

  • Protobuf 語法指南 : https://developers.google.com/protocol-buffers/docs/proto

  • Protobuf Java 語言對應用法 : https://developers.google.com/protocol-buffers/docs/javatutorial

  • Protobuf 下載地址 : https://developers.google.com/protocol-buffers/docs/downloads

  • Protobuf 源碼地址 : https://github.com/protocolbuffers/protobuf

  • Protobuf 發(fā)布版本下載地址 : https://github.com/protocolbuffers/protobuf/releases

  • protobuf-gradle-plugin 項目地址 : https://github.com/google/protobuf-gradle-plugin

博客源碼 :

  • GitHub 地址 : https://github.com/han1202012/Protocol_Buffers
  • CSDN 快照 :

總結

以上是生活随笔為你收集整理的【Android Protobuf 序列化】Protobuf 服务器与客户端通信 ( TCP 通信中使用 Protobuf )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。