Проблемы при использовании WSAAddressToString

ВОПРОС: Я пытаюсь использовать WSAAddressToString Функция, чтобы получить IP-адрес компьютера. Я просмотрел документацию MSDN на их веб-сайте, и в структурах слишком много структур, и я чувствую, что именно здесь я ошибаюсь. Код предоставлен в ссылка здесь . Пожалуйста, дайте мне знать, где именно я иду не так.

ОТВЕТ : Проблема исправлена ​​после включения WSAStartup функция в коде и некоторые изменения в существующем коде. Полный код находится в pastebin, а модифицированный раздел — ниже.

     retval = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (retval != 0)
{
printf("WSAStartup() failed with error code %d\n", WSAGetLastError());
return 1;
}
else
printf("WSAStartup() is OK...\n");size=256;

lp=pAddresses->FirstUnicastAddress->Address.lpSockaddr;
size2=pAddresses->FirstUnicastAddress->Address.iSockaddrLength;
if(WSAAddressToStringA(lp,size2,NULL,op,&size)!= 0)
{
printf("This thing has failed \n");
printf("errordetail: %i\n", WSAGetLastError());

return 1;
}
else
printf("\t The ip address is  = %s\n", op);

4

Решение

Пожалуйста, измените это:

if(WSAAddressToString(lp,size2, NULL,op,&size) != 0) {
printf("This thing has failed \n");
return 1;
} else
printf("Address string = %s\n", op);
pAddresses = pAddresses->Next;
}

К этому:

long errorcode = WSAAddressToString(lp,size2, NULL,op,&size);
if(errorcode != 0) {
printf("The error is number: %i\n", errorcode);
return 1;
} else
printf("Address string = %s\n", op);
pAddresses = pAddresses->Next;
}

Тогда скажите нам, какой номер он напечатал.

Или посмотрите в http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381%28v=vs.85%29.aspx

РЕДАКТИРОВАТЬ:

SOCKADDR_IN6 addrTemp;
addrTemp.sin6_family = AF_INET6;
long errorcode = WSAAddressToString(&addrTemp,size2, NULL,op,&size);
if(errorcode != 0) {
//printf("The error is number: %i\n", errorcode);
printf("errordetail: %i\n", WSAGetLastError());
return 1;
} else
printf("Address string = %s\n", op);
pAddresses = pAddresses->Next;
}
6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]