gpt4 book ai didi

大对象的 C# UDP 对象二进制序列化

转载 作者:太空宇宙 更新时间:2023-11-03 21:59:31 36 4
gpt4 key购买 nike

我正在编写一个同时利用 TCP 和 UDP 通过 Internet 传输序列化对象的网络库。

库(简化)分为客户端和服务器。

在编写 TCP 元素时,我没有遇到任何问题。每次我想发送一个序列化对象时,我只需在对象本身之前发送传入对象的大小,然后等待 NetworkStream 有足够的字节排队。

但是,编写 UDP 服务器有点困难。我有一个问题:

做的时候:

data = udpClient.Receive(ref sender);

我不确定服务器端会发生什么。在第一个示例中,我假设没有数据丢失或排序错误。但是,如果我序列化的对象被分成多个数据包,并且来自多个客户端,会发生什么情况?例如,如果这两个事件同时发生:

  • 客户端A发送10000字节的对象
  • 客户端B发送12000字节的对象

那么我会收到这样的东西吗,按照这个顺序(或足够接近)?

  • 客户A对象部分1/5
  • 客户 B 对象第 1/6 部分
  • 客户 A 对象第 2/5 部分
  • 客户 B 对象第 2/6 部分
  • 等...

如果是这样,我是否应该只为每个客户端存储我收到的数据,直到我认为我有足够的数据,然后尝试反序列化它?

谢谢

最佳答案

当您添加部件排序和拆分时,您在 reshape TCP 的道路上还有很长的路要走 - 但您自己这样做,而不是使用多年来之不易的经验。

从根本上说,UDP 听起来真的不适合您正在尝试做的事情。这是绝对要求吗?

关于大对象的 C# UDP 对象二进制序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10787702/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com