我需要获取正在使用gethostname函数的系统主机名

但是它失败并显示错误代码10093


  无线化
  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;
}

最佳答案

它写在您发布的链接中:


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


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

关于c++ - C++:gethostname()失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24860955/

10-11 17:25