好吧..。我不太清楚这意味着什么,但是我的系统运行着,没有为记忆不足而哭泣。
我想这与系统错误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“,所以我不需要将端口号保存为字符串和数字,或者显式地转换它.
发布于 2010-12-06 18:08:10
问题在于operator const char*()的实现。一旦该函数返回,您的stringstream对象就不再有效,因为它不再在作用域中。
发布于 2010-12-06 16:28:28
可能是getaddrinfo调用中的一个坏参数。你能贴更多代码吗?
在命令提示符下输入net helpmsg 122,您将得到:
传递给系统调用的数据区域太小。
发布于 2010-12-06 16:54:19
getaddrinfo实际上返回一个错误代码,您应该根据getaddrinfo文档中指定的值对其进行测试。
https://stackoverflow.com/questions/4368525
复制相似问题