如何动态分配缓冲区以接收UDP套接字(VB.Net)

时间:2010-02-20 22:05:29

标签: vb.net sockets udp buffer

我和一位朋友正在开发一个项目,我们需要使用VB.Net构建一个可靠的UDP客户端/服务器。我们的事情运作良好,但我们仍然有一件事就是如何为传入数据动态分配(字节)缓冲区。现在我们必须硬编码最大值/ MTU(或者使用非常大的缓冲区大小并在我们完成接收后调整它的大小)。有没有人知道这样做的方法,而无需指定接收缓冲区大小?

基本上,在使用大小为x的缓冲区调用套接字上的receive函数之前,我们想知道x所以我们可以分配一个适当大小的缓冲区。也许这是你需要处理的所有套接字编程中的一个问题?

1 个答案:

答案 0 :(得分:1)

这是使用UDP时必须承担的负担之一。你必须考虑Path MTU discovery。然后,由于您正在制作可靠的UDP,您应该能够自动检测这个并动态切换到较小的数据包大小。这也将解决PMTUD问题。

希望这听起来不太像:“那些不使用TCP的人注定会重新发明它。”查看该文章中链接的RFC以获取相关信息。