首頁 > 後端開發 > C++ > 如何在 C# 中正確反序列化透過 TCP 接收的結構並避免 SafeArrayTypeMismatchException?

如何在 C# 中正確反序列化透過 TCP 接收的結構並避免 SafeArrayTypeMismatchException?

Patricia Arquette
發布: 2024-12-31 03:41:13
原創
359 人瀏覽過

How to Correctly Deserialize a Struct Received Over TCP in C# and Avoid SafeArrayTypeMismatchException?

在C# 中反序列化透過TCP 接收的結構

問題:

問題:

問題:

  1. 問題:
  2. 問題:
  3. 發送>序列化結構時,RemuseNetworkPacket,透過TCP,在單獨的反序列化機器會導致SafeArrayTypeMismatchException。長度前綴格式為l=xxxx;;,其中xxxx代表封包長度。
  4. 解:

問題是由於長度前綴被作為字串處理而產生的而不是整數。應正確實現長度前綴:

    將封包長度轉換為位元組:
  1. 將封包資料的長度(不包括長度前綴和標頭)轉換為位元組數組。這通常會產生 4 個位元組。
  2. 加上長度前綴和標頭:
  3. 將長度位元組陣列與封包資料標頭和實際封包資料連接起來。
  4. 封包結構:
  5. 產生的封包結構應為:[長度(4 位元組)][標頭(1 位元組)][資料(x byte(s))].
  6. 接收並反序列化:
讀取長度:讀取前4 個位元組(長度)並將它們轉換為整數。 讀取header:讀取下一個位元組(header)。 讀取資料:讀取x個位元組(其中x是步驟1中獲得的長度)到位元組數組中。 反序列化資料包: 使用步驟 2 中的標頭確定適當的反序列化方法並將其應用於位元組數組從第 3 步開始。

以上是如何在 C# 中正確反序列化透過 TCP 接收的結構並避免 SafeArrayTypeMismatchException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板