繁体   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