C++: gethostname() failing

C++: gethostname() failing

本文关键字:failing gethostname C++      更新时间:2023-10-16

我需要获得我使用gethostname函数的系统主机名

错误码10093错误码

WSANOTINITIALISED10093

尚未执行成功的wsstartup。应用程序有未调用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] = '';
   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

错误信息说明了一切。您需要在gethostname之前调用WSAStartup: http://msdn.microsoft.com/en-gb/library/windows/desktop/ms742213(v=vs.85).aspx

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