WSAGETLASTERROR()返回122
-
09-10-2019 - |
题
好吧,我不确定这是什么意思,但是我的系统运行,运行和运行,而不会哭泣,而没有足够的模因...
我想这与系统错误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变量的大小很可能太小。您需要发布更多代码以获得更彻底的答案。
不隶属于 StackOverflow