Мне нужно получить имя хоста системы, для которого я использую 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;
}
Это написано в ссылке, которую вы разместили:
Успешный
WSAStartup
вызов должен произойти перед использованием этой функции.
Вызов WSAStartup
, проверьте его код возврата, если все прошло хорошо, позвоните gethostname
,
Сообщение об ошибке говорит обо всем. Вам нужно позвонить WSAStartup
до gethostname
: http://msdn.microsoft.com/en-gb/library/windows/desktop/ms742213(v=vs.85).aspx
Прочитайте сообщение об ошибке: приложение не вызвало WSAStartup