Winapi 如何动态了解TCP缓冲区大小

Winapi 如何动态了解TCP缓冲区大小,winapi,winsock,Winapi,Winsock,是否可以在windows上动态了解TCP缓冲区大小。我使用SO_SNDBUF、SO_RECVBUF设置TCP缓冲区大小,还可以使用getsockopt()检查其分配的缓冲区大小。但我想知道如何获得可用的缓冲区大小,以便在缓冲区大小超出范围时可以采取一些措施。任何实用程序或api都同样有用。 我的问题是针对windows的。虽然任何人都了解linux,但了解任何并行操作对我来说也很有用。内核异步使用缓冲区。你不能控制他们。此外,底层实现可以忽略您的SO_SNDBUF/SO_RECVBUF请求,或者

是否可以在windows上动态了解TCP缓冲区大小。我使用SO_SNDBUF、SO_RECVBUF设置TCP缓冲区大小,还可以使用getsockopt()检查其分配的缓冲区大小。但我想知道如何获得可用的缓冲区大小,以便在缓冲区大小超出范围时可以采取一些措施。任何实用程序或api都同样有用。
我的问题是针对windows的。虽然任何人都了解linux,但了解任何并行操作对我来说也很有用。

内核异步使用缓冲区。你不能控制他们。此外,底层实现可以忽略您的SO_SNDBUF/SO_RECVBUF请求,或者选择提供比请求的更小/更大的数量。

实际上,在运行大约17020小时后,我收到套接字错误10055。此错误意味着windows没有足够的内存用于此操作。我只是想,如果我知道TCP套接字的缓冲容量,我将断开它,或者过一段时间后将其清除。您可以参考我在本期的帖子你创建了多少个连接?@Eugene Homyakov,只有一个套接字连接。但这是一个用于传输文本数据的连接(大约5-7 Mbps数据交换)。我认为传输数据不会触发此错误。更可能的是,您正在泄漏套接字,即忘记调用
closesocket
@Eugene Homyakov,即使我也这么认为。我反复检查了我的代码,但情况并非如此。我还发现,即使在20个小时的测试中,我的连接也很少断开1-2次。我还使用了“TCPView”(相当类似于netstat命令)来检查相同的内容(启动应用程序后立即检查,然后间歇性检查)。它不会显示在一段时间内连接数量的增加。因此,我只希望这是另外一种情况,。