winapi — C ++: сбой gethostname ()

Мне нужно получить имя хоста системы, для которого я использую gethostname функция

Но его ошибка с кодом ошибки 10093 который

WSANOTINITIALISED
10093

Успешный запуск WSAS еще не выполнен. Либо приложение имеет
не вызвано WSAStartup или WSAStartup не удалось. Приложение может быть
доступ к сокету, который не принадлежит текущей активной задаче (то есть
пытается разделить сокет между задачами), или WSACleanup был вызван
слишком много раз.

Ниже код моей программы:

#include <Winsock2.h>
#include <ws2tcpip.h>
#include <Windows.h>
#pragma comment(lib, "Ws2_32.lib")

int main()
{
char hostname[1024];
hostname[1023] = '\0';
gethostname(hostname, 1023);
int err = WSAGetLastError();
}

Что может быть причиной этой неудачи?


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

Добавление кода ниже до вызова функции gethostname решило проблему.

if (WSAStartup (MAKEWORD(2,2), &WSAData) != 0)
{
MessageBox (NULL, TEXT("WSAStartup failed!"), TEXT("Error"), MB_OK);
return FALSE;
}

0

Решение

Это написано в ссылке, которую вы разместили:

Успешный WSAStartup вызов должен произойти перед использованием этой функции.

Вызов WSAStartup, проверьте его код возврата, если все прошло хорошо, позвоните gethostname,

2

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

Сообщение об ошибке говорит обо всем. Вам нужно позвонить WSAStartup до gethostname: http://msdn.microsoft.com/en-gb/library/windows/desktop/ms742213(v=vs.85).aspx

1

Прочитайте сообщение об ошибке: приложение не вызвало WSAStartup

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