好吧,我不确定这是什么意思,但是我的系统运行,运行和运行,而不会哭泣,而没有足够的模因...

我想这与系统错误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”,因此我不需要将端口号保存为字符串和号码,也不需要显式转换...

有帮助吗?

解决方案

问题是您的实施 operator const char*(). 。一旦该功能返回,您的 stringstream 对象不再有效,因为它不再存在于范围。

其他提示

可能是一个不好的参数 getaddrinfo 称呼。您可以发布更多代码吗?

输入 net helpmsg 122 在命令提示符下,您得到了:

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

getaddrinfo 实际返回错误代码,您应该根据该值对其进行测试 GetAddrinfo文档

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top