2010-12-06 29 views
1

嗯..我真的不知道这意味着什么,但我的系统运行和运行,并没有哭memeory不足运行...WSAGetLastError()返回122

我猜它与系统错误做122,这是因为在Winsock错误代码(MSDN)没有122 ...

任何人都得到了线索?...

它occures在通话过程中getaddrinfo(NULL, /*PortNumber*/, &hints, &pFinal)

编辑好吧。 ..继承人更多的代码(有它不注释掉,doesn't意义,太)

  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”,所以我不需要将端口号保存为字符串和数字或明确地将其转换...

+1

发布更好的代码,将PortNumber注释掉是没有意义的。 – 2010-12-06 16:32:21

回答

1

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

2

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

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

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

+0

确实发布了更多代码 – Incubbus 2010-12-06 17:20:59

+0

让那个操作符返回一个`std :: string`,以便在ss.str()被破坏时数据不会超出范围 – 2010-12-06 17:26:24

0

更可能的是指定的值,则pFinal变量的尺寸太小。您需要发布更多代码才能获得更全面的答案。

相关问题