Это разрешает 204.204.204.204 из-за комбинации: (1) неинициализированной socket_address
, (2) пустой ip_address
и (3) конфигурации отладки [Visual Studio C ++]: -> Неинициализированный socket_address
имеет простое значение (204.204.204.204 случайно из-за конфигурации Debug), -> InetPtonA
завершается неудачно (из-за пустого ip_address
), и поэтому -> socket_address
не изменилось.
Инициализировать socket_address
с 0:
struct sockaddr_in socket_address; memset(&socket_address, 0, sizeof(sockaddr_in));
, и оно больше не разрешает 204.204.204.204.В нем говорится, что 204 является значением по умолчанию для неинициализированных переменных в конфигурации Debug, но я бы не стал рассчитывать на это значение.В Release-конфигурации без инициализации это просто мусор:
-
Чтобы get_computer_name
правильно, используйте правильныеip_address
.Второй параметр netPtonA
должен содержать "Указатель на строку с нулевым символом в конце, которая содержит текстовое представление IP-адреса для преобразования в двоичную цифровую форму." [MSDN].Примерно так:
int main()
{
std::string ip("127.0.0.1"), cn;
get_computer_name(ip, cn);
return 0;
}