在命令提示符中,我可以使用:
netsh int tcp 设置全局拥塞提供者=ctcp
我想知道是否有一种方法可以在不使用 system() 的情况下在 C/C++ 中以编程方式完成相同的事情。
我假设我可能不得不使用 COM?
编辑:还有关于我如何访问我通常会通过 C/C++ 中的 netsh 访问的其他信息的信息,会很好:)(例如:netsh int tcp show global
)
最佳答案
从字里行间看,这可能可以通过手动修改注册表来实现,就像 Windows XP/Windows Server 2003 backport of CTCP 所描述的那样。假设,您必须使用 RegSetValueEx 将给定值设置为 1 并使用 RegQueryValueEx 检查它以查看此时的状态。
When you apply this hotfix, the following registry subkey is created:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
The properties of this subkey are as follows:
Name: TCPCongestionControl
Type: REG_DWORD
Value: 1
When the value is set to 1, CTCP support is enabled. When the value is set to 0, CTCP support is disabled.
这是否完全适用于您,或者不重新启动取决于1)适当的组件是否自动检测注册表模块以及2)在较新的操作系统上是否仅此而已。不过,这似乎不太难尝试。
关于c++ - C/C++复合TCP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6440053/