我需要获取使用gethostname函数的系统主机名
但它以错误代码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;
}