我已经使用套接字进行了很长时间的编程,而我常常做的一件事就是在消息开头包含一个vli(可变长度指示符)。 vli实际上是2或4个字节,表示消息的长度。我们的想法是,如果两条消息一起出现,您可以将它们分开。如果消息跨越多个数据包,您可以将它们缓冲在一起以生成消息。
问题是,如果我使用c#TcpSocket或TcpListener通过TCP发送消息,是否仍然需要包含vli或者c#套接字库是否处理它并确保每个事件发送一条消息并且消息是没有分解成多个数据包。
答案 0 :(得分:1)
.NET套接字类只是套接字API的包装器。您仍然遇到与使用API直接相同的所有问题。
如果您想通过TCP完成消息传递,请查看Windows Communication Foundation(WCF),它是一个.NET库。它提供了通过多种传输传输完整对象的能力,包括TCP。