getaddrinfo() 函数抛出错误 n 11003

getaddrinfo() function throw error n 11003

本文关键字:错误 11003 出错 函数 getaddrinfo      更新时间:2023-10-16

这把我逼疯

#undef UNICODE
#include "stdafx.h"
#include <WS2tcpip.h>
#include <WinSock2.h>
#include <string>
#pragma comment(lib,"Ws2_32.lib")
using namespace std;
int _tmain(int argc, char* argv[])
{
    WSADATA wsa;
    int error = WSAStartup(MAKEWORD(2,2),&wsa);
    if (error != 0)
    {
        printf("An error in startup %dn",WSAGetLastError());
        system("pause");
    }
    addrinfo hints,
        * result = NULL,
        * ptr = NULL;
    hints.ai_family = AF_UNSPEC;
    hints.ai_protocol = IPPROTO_TCP;
    hints.ai_socktype = SOCK_STREAM;
    error = getaddrinfo(argv[1],NULL,&hints,&result);
    if (error != 0)
    {
        printf("An error in getaddrinfo %dn",WSAGetLastError());
        system("pause");
    }
    char stringbuffer[2075];
    int len = sizeof(stringbuffer);
    for(ptr = result; ptr->ai_next != NULL; ptr = ptr->ai_next)
    {
        if(ptr->ai_family == AF_INET)
        {
            printf("Address: %sn",InetNtop(ptr->ai_family,ptr->ai_addr,stringbuffer,len));
        }
    }
    return 0;
}

getaddrinfo 抛出 11003 错误,我已经将很多互联网资源与 main 进行了比较,但我无法弄清楚为什么 getaddrinfo 失败了!我已经阅读了Winsock错误代码说明,它说11003"表示在数据库查找期间发生了某种不可恢复的错误",因此提前感谢!编辑:我已经问过其他地方,但没有一个给我解决方案,我被阻止了,我无法前进

正如nos在评论中提到的

memset(&hints, 0, sizeof(hints))

应该做这个伎俩。

getaddrinfo()尝试填充提供的现有数据。垃圾数据混淆了函数。