Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ WSAGetLastError()返回122_C++_Winsock_Getaddrinfo - Fatal编程技术网

C++ WSAGetLastError()返回122

C++ WSAGetLastError()返回122,c++,winsock,getaddrinfo,C++,Winsock,Getaddrinfo,嗯。。我真的不知道这意味着什么,但我的系统运行着,运行着,运行着,没有哭泣的内存不足 我想这与系统错误122有关,因为winsock错误代码(MSDN)中没有122 有人有线索吗 它发生在调用getaddrinfo(NULL,/*PortNumber*/,&hints,&pFinal) 编辑好的。。。这里有更多的代码(没有注释掉,也没有意义) 问题在于我的g_ACCEPTOR_PORT_NUMBER,它是一个包含 operator const char*() { std:

嗯。。我真的不知道这意味着什么,但我的系统运行着,运行着,运行着,没有哭泣的内存不足

我想这与系统错误122有关,因为winsock错误代码(MSDN)中没有122

有人有线索吗

它发生在调用
getaddrinfo(NULL,/*PortNumber*/,&hints,&pFinal)

编辑好的。。。这里有更多的代码(没有注释掉,也没有意义)

问题在于我的g_ACCEPTOR_PORT_NUMBER,它是一个包含

operator const char*()
    {
        std::stringstream ss;
        ss << m_nPortNumber;
        return ss.str().c_str();
    }
运算符常量字符*()
{
std::stringstream-ss;

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

在命令提示下键入
net helpmsg 122
,您将得到:

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


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

在命令提示下键入
net helpmsg 122
,您将得到:

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


getaddrinfo
实际返回一个错误代码,您应该根据

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

中指定的值进行测试。很可能,pFinal变量的大小太小。您需要发布更多的代码才能获得错误代码更全面的答案。

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

问题在于您的
运算符const char*()
。一旦该函数返回,您的
stringstream
对象就不再有效,因为它不再在作用域中。

问题在于您的
运算符const char*()
。一旦该函数返回,您的
stringstream
对象就不再有效,因为它不再在作用域中。

发布更好的代码,将PortNumber注释掉是没有意义的。发布更好的代码,将PortNumber注释掉是没有意义的。如果是这样,那么Microsoft的程序员就犯了一些难以置信的错误……是吗甚至阅读编辑下面的代码和我的注释?=如果是的话,那么微软的程序员犯了一些难以置信的错误…你甚至阅读了编辑下面的代码和我的注释吗?=让该操作符返回一个
std::string
以便在
ss.str()时数据不会超出范围
getdestructed问题是,getaddrinfo接受一个const char*而不是str…我尝试不使用c_str()…但我想我必须^^…如果你想用那种方式封装端口,你必须允许以某种方式获取它的等效字符串。返回一个
字符串
,然后传递
.c_str()
对WIn32 API来说似乎不太凌乱,是吗?WIn32 API是面向C的,因此一些妥协是不可避免的。让该操作符返回
std::string
以便在
ss.str()
被破坏时数据不会超出范围问题是,getaddrinfo使用const char*而不是str…我尝试不使用C_str()…但是我想我必须^^…如果你想用那种方式封装端口,你必须允许以某种方式获取它的等价字符串。返回
字符串
,然后传递
.c_str()
对WIn32 API来说似乎不太凌乱,是吗?WIn32 API是面向C的,因此一些妥协是不可避免的。
operator const char*()
    {
        std::stringstream ss;
        ss << m_nPortNumber;
        return ss.str().c_str();
    }