c++ - 读取 Windows UDP 缓冲区大小
问题描述
我很难弄清楚如何通过命令提示符检查 Windows 中的 UDP 缓冲区大小。我正在寻找类似于 linux 命令“sysctl net.core.rmem_max”的东西。我不需要设置 UDP 缓冲区大小,我只需要检查它以便在它小于我推荐的大小时发出警告。到目前为止,我似乎看到的每个地方都指向通过 Windows 注册表设置缓冲区大小。有谁知道通过命令提示符或 C++ 简单地检查缓冲区大小的可能方法?
解决方案
我不知道如何从命令行执行此操作(看起来PowerShell可以执行此操作),但您应该能够在 C++ 中执行此操作,如下所示(注意:未经测试):
#include <iostream>
#include <WinSock2.h>
#include <Ws2tcpip.h>
#pragma comment (lib, "Ws2_32.lib")
int main ()
{
WSADATA wsaData;
int err = WSAStartup (MAKEWORD (2, 2), &wsaData);
if (err != NO_ERROR)
{
std::cerr << "WSAStartup failed with error " << err << "\n";
return 1;
}
SOCKET s = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (s == INVALID_SOCKET)
{
std::cerr << "socket failed with error " << WSAGetLastError () << "\n"
return 1;
}
int rcvbuf_len;
socklen_t optlen = sizeof (rcvbuf_len);
if (getsockopt (s, SOL_SOCKET, SO_RCVBUF, &rcvbuf_len, &optlen) < 0)
{
std::cerr << "getsockopt failed with error " << WSAGetLastError () << "\n";
return 1;
}
std::cout << "UDP receive buffer length = " << rcvbuf_len << " bytes\n");
}
我们不需要在这里清理任何资源,因为这会在程序退出时自动发生。
推荐阅读
- javascript - 特殊字符的键值是什么?
- python-3.x - 找到用 C 实现的方法的源代码?
- python - 使用 Matplotlib-Basemap 和 Xarray 绘制纬度/经度网格线
- laravel - Nginx,一个应用程序,多个域,为所有域重定向 SSL 和非 www
- android - Espresso 不匹配具有许多字符的矢量可绘制对象 - ImageDrawable(AppCompatResource)
- c# - 生成的 Razor 视图文件无法识别模型类
- laravel - Laravel 模型迁移继承
- qt - 多选 QML 组合框
- android - 找不到 com.android.support:appcompat-v7:26.0.1
- android - 我的语言翻译在调试版本中不起作用