为什么我从 QOSStartTrackingClient 方法收到 67 代码?
Why am I receiving 67 code from QOSStartTrackingClient method?
我从下面的代码中收到错误代码 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
只是占位符
Winsock functions using sockaddr are not strictly interpreted to be
pointers to a sockaddr structure. The structure is interpreted
differently in the context of different address families. The only
requirements are that the first u_short is the address family and the
total size of the memory buffer in bytes is namelen.
来自here
To actually fill in values for each part of an address, you use the
SOCKADDR_IN data structure, which is specifically for this address
format. The SOCKADDR and the SOCKADDR_IN data structures are the same
size. You simply cast to switch between the two structure types.
在你的情况下你需要使用 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();
我从下面的代码中收到错误代码 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
只是占位符
Winsock functions using sockaddr are not strictly interpreted to be pointers to a sockaddr structure. The structure is interpreted differently in the context of different address families. The only requirements are that the first u_short is the address family and the total size of the memory buffer in bytes is namelen.
来自here
To actually fill in values for each part of an address, you use the SOCKADDR_IN data structure, which is specifically for this address format. The SOCKADDR and the SOCKADDR_IN data structures are the same size. You simply cast to switch between the two structure types.
在你的情况下你需要使用 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();