1

好吧..我不太确定这意味着什么,但是我的系统运行并运行并运行并没有因为内存不足而哭泣......

我想这与系统错误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

4 回答 4

2

可能是getaddrinfo调用中的错误参数。您可以发布更多代码吗?

net helpmsg 122命令提示符下输入,你会得到:

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

于 2010-12-06T16:28:28.233 回答
1

getaddrinfo实际上返回一个错误代码,您应该根据getaddrinfo 文档中指定的值对其进行测试

于 2010-12-06T16:54:19.707 回答
1

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

于 2010-12-06T18:08:10.790 回答
0

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

于 2010-12-06T17:03:34.717 回答