Я знаю, что нет никакой записи о том, что я делаю, но я уверен, что есть люди, которые знакомы с ConvertLengthToIpv4Mask()
,
После того как я позвоню ConvertLengthToIpv4Mask()
преобразовать OnLinkPrefixLength
чтобы получить маску подсети.
ConvertLengthToIpv4Mask()
дает мне какое-то странное число «16777215».
Это часть, которая не уверена, правильно ли я понял, странное число «16777215» — это ДЛИННОЕ представление сетевой части, когда я преобразовываю его в биты, оно дает мне «111111111111111111111111», затем я делю его на части по 8 бит, и результат, который я получаю «255 255 255»
Небольшая часть кода:
PIP_ADAPTER_ADDRESSES pCurrAddresses = NULL;
PIP_ADAPTER_UNICAST_ADDRESS pUnicast = NULL;
ULONG subnet = 0;
PULONG mask = &subnet;
pUnicast = pCurrAddresses->FirstUnicastAddress;
if (pUnicast != NULL)
{
for (i = 0; pUnicast != NULL; i++)
{
struct sockaddr_in *sockaddr_ipv4;
sockaddr_ipv4 = (struct sockaddr_in *)pUnicast->Address.lpSockaddr;
printf("IPv4 pUnicast %s \n", inet_ntoa(sockaddr_ipv4->sin_addr));
ConvertLengthToIpv4Mask(pUnicast->OnLinkPrefixLength, mask);
pUnicast = pUnicast->Next;
}
}
Хорошо, мой вопрос, я правильно понял?
Если нет?
Любой намек был бы великолепен?
Спасибо 🙂
Задача ещё не решена.
Других решений пока нет …