简体   繁体   English

带有Socket.Receive的大缓冲区是否会增加WSAENOBUFS SocketError的风险?

[英]Does a large buffer with Socket.Receive increase the risk of a WSAENOBUFS SocketError?

We are getting an error that the operation system could not allocate more TCP buffers (SocketError=WSAENOBUFS). 我们收到一个错误,指出操作系统无法分配更多的TCP缓冲区(SocketError = WSAENOBUFS)。 This is basically because the machine is running out of memory. 这基本上是因为计算机内存不足。

But I was wondering if such a situation can be made worse by calling Socket.Receive with a very large buffer. 但是我想知道通过使用非常大的缓冲区调用Socket.Receive是否会使这种情况变得更糟。 Does Windows need to allocate more TCP buffers when we supply a large buffer? 当我们提供大缓冲区时,Windows是否需要分配更多的TCP缓冲区?

If you supply a large buffer, it's supplied. 如果提供较大的缓冲区,则将提供它。 Windows doesn't have to allocate it: you did. Windows不必分配它:您已经分配了。 There isn't much point in specifying a buffer larger than the socket receive buffer itself, as it can never be filled. 指定一个比套接字接收缓冲区本身更大的缓冲区没有什么意义,因为它永远无法填充。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM