Мне нужно получить имя хоста системы, для которого я использую получить имя хоста
Но сбой с кодом ошибки 10093, который
WSANOTINITIALISED 10093
Успешный WSAStartup еще не выполнен. Либо приложение не вызвало 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;
}
WSACleanup()
для каждого успешногоWSAStartup()
. Лучше всего вызыватьWSAStartup()
один раз при запуске приложения, а затемWSACleanup()
при выходе из приложения. Но вы можете вызыватьWSAStartup()
несколько раз в течение жизни приложения, пока вы сохраняете баланс междуWSAStartup()
иWSACleanup()
. - person Remy Lebeau   schedule 21.07.2014