全部,
我是 C# 和套接字编程的新手,我需要一些建议。我一直在寻找这个网站和类似的网站,但还没有真正找到解决我的问题的方法。
我正在开发一个客户端应用程序和一个服务器应用程序,两者通过异步套接字进行通信。客户端通过使用 BinaryFormatter 将对象序列化为 MemoryStream,一次一个地将对象发送到服务器。生成的字节数组通过套接字发送并由服务器反序列化。
当服务器有时间在客户端发送新对象之前接收和处理对象时,这很有效。但是,当客户端发送对象的速度快于服务器处理它们的速度时,它们会在服务器端排队。下一个 EndReceive() 调用从套接字读取所有排队的对象,但序列化程序只反序列化第一个对象,其他对象丢失。
这些对象的大小是可变的,所以我想我不能使用 MemoryStream 的 Position 属性。有没有办法在字节数组中检测对象开始的地方?
此外,我在其他帖子中读到 EndReceive() 可能无法接收一次读取发送的所有内容,可能需要其他读取。所以我想这是我必须处理的其他事情?
任何指针?任何帮助将不胜感激。:-)