为什么我从QOSStartTrackingClient方法收到67代码



我从下面的代码中收到错误代码67,这意味着ERROR_BAD_NET_NAME.

为什么会这样?我该如何解决它?

SOCKADDR address;
strcpy_s(address.sa_data, "8.8.8.8");
address.sa_family = AF_INET;
if (!QOSStartTrackingClient(QoSHandle, &address, 0))
    cout << GetLastError();

你初始化SOCKADDR错误:

strcpy_s(address.sa_data, "8.8.8.8"); - 这是错误。

真的SOCKADDR只是占位符

使用 sockaddr 的 Winsock 函数不被严格解释为 指向 sockaddr 结构的指针。解释结构 在不同的地址族的上下文中有所不同。唯一的 要求是第一个u_short是地址族和 内存缓冲区的总大小(以字节为单位(为 namelen。

从这里开始

要实际填写地址的每个部分的值,请使用 SOCKADDR_IN数据结构,专门针对此地址 格式。SOCKADDRSOCKADDR_IN 数据结构是相同的 大小。您只需强制转换即可在两种结构类型之间切换。

在您的情况下,您需要使用SOCKADDR_IN

    SOCKADDR_IN sa = { AF_INET };
    sa.sin_addr.s_addr = inet_addr("8.8.8.8");
    if (!QOSStartTrackingClient(QoSHandle, (SOCKADDR*)&sa, 0))
        cout << GetLastError();

相关内容

  • 没有找到相关文章

最新更新