c# - socket VLI(可变长度指示器)

标签 c# sockets

我使用套接字编程已有很长时间了,我经常做的一件事是在消息开头添加一个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/

相关文章:

c# - system.dll 中的 System.net.webException

c# - 重用异步套接字 : subsequent connect attempts fail

python - Python:重新连接客户端套接字

C套接字仅使用二进制数据造成内存泄漏

c# - 为什么 Request Header 上的 ContentType 属性为 Null?

c# - checkin : Operation not performed Could not find file *. csproj.vspscc

c# - 如何从连接到同一个表的数据表中进行选择?

c# - 如何在 Entity Framework 流利的 api 中的所有字段上设置默认长度?

c# - 您如何发现 TCPListener 服务的 IP 地址?

python - 分割视频文件并使它们单独播放