我使用套接字编程已有很长时间了,我经常做的一件事是在消息开头添加一个vli(可变长度指示器)。 vli通常为2或4个字节,指示消息有多长时间。这个想法是,如果两个消息一起出现,则可以将它们分开。如果一条消息跨越多个数据包,则可以将它们一起缓冲以生成消息。
问题是我是否正在使用C#TcpSocket或TcpListener通过TCP发送消息,还是仍然需要包含vli还是C#套接字库会处理它并确保每个事件发送一条消息并且消息没有被破坏分成多个数据包。
最佳答案
.NET套接字类只是套接字API的包装。您仍然遇到直接使用API时遇到的所有相同问题。
如果要通过TCP进行完整的消息传递,请查看Windows Communication Foundation(WCF),它是一个.NET库。它提供了通过许多传输(包括TCP)传输完整对象的能力。
关于c# - socket VLI(可变长度指示器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3807843/