我正在编写一个同时利用TCP和UDP通过互联网传输序列化对象的网络库。
库(简化)分为客户端和服务器。
编写TCP元素时,我没有遇到任何麻烦。每次我想发送一个序列化对象时,我只是在对象本身之前发送该传入对象的大小,并等到NetworkStream有足够的字节排队。
但是,编写UDP服务器有点困难。我有一个问题:
做的时候:
data = udpClient.Receive(ref sender);
我不确定在服务器端会发生什么。 在第一个例子中,我将假设没有数据丢失或错误地订购。 但是,如果我序列化的对象被拆分为多个数据包,并且来自多个客户端,会发生什么?例如,如果这两个事件同时发生:
然后,我会按此顺序(或接近足够)收到类似的内容吗?
如果是这样,我应该只为每个客户存储我收到的数据,直到我认为我有足够的数据,然后尝试反序列化它?
谢谢
答案 0 :(得分:4)
当你添加零件订购和拆分时,你在重塑TCP的道路上已经走了很长一段路 - 但是你自己这样做,而不是使用多年来来之不易的经验。
从根本上说,听起来UDP并非真正适合您正在尝试的内容。这是绝对的要求吗?