簡體   English   中英

C#UDP對象二進制序列化與大對象

[英]C# UDP Object Binary Serialization with large objects

我正在編寫一個同時利用TCP和UDP來通過互聯網傳輸序列化對象的網絡庫。

庫(簡化)分為客戶端和服務器。

在編寫TCP元素時,我沒有遇到任何麻煩。 每次我想發送一個序列化對象時,我只是在對象本身之前發送該傳入對象的大小,並等到NetworkStream有足夠的字節排隊。

但是,編寫UDP服務器有點困難。 我有個問題:

做的時候:

data = udpClient.Receive(ref sender);

我不確定在服務器端會發生什么。 在第一個例子中,我將假設沒有數據丟失或錯誤地訂購。 但是,如果我序列化的對象被拆分為多個數據包,並且來自多個客戶端,會發生什么? 例如,如果這兩個事件同時發生:

  • 客戶端A發送10,000字節的對象
  • 客戶端B發送12,000字節的對象

那么我會按此順序(或接近足夠)接收這樣的東西嗎?

  • 客戶端對象部分1/5
  • 客戶B對象部分1/6
  • 客戶端對象部分2/5
  • 客戶B對象部分2/6
  • 等等...

如果是這樣,我應該只為每個客戶端存儲我收到的數據,直到我認為我有足夠的數據,然后嘗試反序列化它?

謝謝

當你添加零件訂購和拆分時,你在重塑TCP的道路上還有很長的路要走 - 但這樣做是自己而不是使用多年來來之不易的經驗。

從根本上說,它聽起來就像UDP是不是真的適合你想要做什么。 這是絕對的要求嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM