Mat*_*iee 7 qos winapi getlasterror sockaddr-in
我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();
Run Code Online (Sandbox Code Playgroud)
你初始化SOCKADDR错误:
strcpy_s(address.sa_data, "8.8.8.8");- 这是错误。
确实SOCKADDR只是占位符
使用 sockaddr 的 Winsock 函数并不严格解释为指向 sockaddr 结构的指针。在不同地址族的上下文中,该结构有不同的解释。唯一的要求是第一个 u_short 是地址族,内存缓冲区的总大小(以字节为单位)是 namelen。
从这里开始
要实际填充地址每个部分的值,您可以使用 SOCKADDR_IN数据结构,该结构专门用于该地址格式。SOCKADDR和SOCKADDR_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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |