所以我有一個基本的UDP服務器,我已經實現了一些東西,像恢復字節數組一樣,它究竟是如何被客戶端發送的(如果它被無序地檢索到)。 Bassicaly,我有客戶端,服務器和共享類庫,其類型可以從客戶端發送到服務器,反之亦然。所以現在我想出了一些想法來序列化一些對象併發送到服務器/客戶端。但我需要知道接收了哪種類型的對象以正確地反序列化它。想到兩個想法來解決這個問題:如何通過哈希值來識別類型?
- 做一個「握手」。發送有關將要發送的對象,其長度,類名稱等數據,然後再檢索實際數據並將其反序列化。我知道這樣做,但由於它是UDP,這個「握手」可能會丟失,我需要重新提問,所以存在相當複雜的邏輯和網絡過度使用情況,但我知道如何實現這一點。
- 第二個是通過一些散列值來識別類型。所以客戶端發送的數據包含類型和數據片段的散列值(我只會發送自己類型的對象,因此不需要爲C#和框架類型實現此功能),並且需要通過此散列值確定類型,服務器可以正確地實現它。
那麼有什麼想法,該如何實現呢?這將是完美的,如果我管理,以避免反光,因爲它的速度慢(我不關心巨大的switch語句,如果它工作更快)
我假設你有你自己的協議,因爲你通過UDP發送字節。所以我會說有一個保留的字節或兩個,你可以用它來確定你正在發送/接收什麼類型的對象。隨你便。 – BeemerGuy
不,只是標準[二進制序列化](http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter.aspx)此刻 – dantix
這個想法仍然存在:你可以發送一個序列化的類型,在對象之前發出什麼信號 – 2012-05-23 22:37:57