WSAGetLastError()返回122

时间:2010-12-06 16:20:54

标签: c++ winsock getaddrinfo

嗯..我不太确定这意味着什么,但是我的系统运行并运行并且没有因为记忆不足而哭泣......

我想这与系统错误122有关,因为winsock错误代码(MSDN)中没有122 ......

任何人都有线索?...

调用getaddrinfo(NULL, /*PortNumber*/, &hints, &pFinal)

时会发生这种情况

编辑好吧......还有更多的代码(没有注释掉,也没有意义)

            addrinfo hints, *pFinal = nullptr;
            memset(&hints, 0, sizeof(hints));
            hints.ai_flags = AI_PASSIVE;
            hints.ai_socktype = SOCK_STREAM;
            hints.ai_family = AF_INET;

            if(getaddrinfo(NULL, g_ACCEPTOR_PORT_NUMBER, &hints, &pFinal))
                return ERROR_BIND_SOCKET;

问题在于我的g_ACCEPTOR_PORT_NUMBER,这是一个包含

的类
operator const char*()
    {
        std::stringstream ss;
        ss << m_nPortNumber;
        return ss.str().c_str();
    }

我是否必须更改转换运算符?...我更喜欢使用此“STRINGINT”,因此我不需要将端口号保存为字符串和数字或明确转换它...

4 个答案:

答案 0 :(得分:2)

getaddrinfo来电可能是一个错误的参数。你能发布更多代码吗?

在命令提示符下键入net helpmsg 122,您将获得:

  

传递给系统调用的数据区域   太小了。

答案 1 :(得分:1)

getaddrinfo实际上会返回错误代码,您应根据getaddrinfo documentation

中指定的值进行测试

答案 2 :(得分:1)

问题是您operator const char*()的实施。该函数返回后,您的stringstream对象不再有效,因为它不在范围内。

答案 3 :(得分:0)

很可能,pFinal变量的大小太小。您需要发布更多代码才能获得更全面的答案。