我需要获取正在使用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/