日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

文章目錄

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





一、TCP 粘包和分包



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

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

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

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





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



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

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





三、客戶端 Android 應用使用 Protobuf



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





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



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

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

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


服務器端軟件開發參考

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 發布版本下載地址 : 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 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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