0

我需要获取使用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;
}
4

3 回答 3

3

它写在您发布的链接中:

WSAStartup使用此功能之前必须成功调用。

调用WSAStartup,检查返回码,如果一切顺利,调用gethostname

于 2014-07-21T08:50:57.743 回答
1

错误消息说明了一切。您需要先致电WSAStartup: http gethostname: //msdn.microsoft.com/en-gb/library/windows/desktop/ms742213 (v=vs.85).aspx

于 2014-07-21T08:51:22.323 回答
0

阅读错误信息:应用程序尚未调用WSAStartup

于 2014-07-21T08:51:09.753 回答