WSAGetLastError () возвращает 122 - PullRequest
       24

WSAGetLastError () возвращает 122

1 голос
/ 06 декабря 2010

Хорошо .. Я не совсем уверен, что это значит, но мои системы работают, работают и работают без плача из-за недостаточной памяти ...

Я думаю, это связано с системной ошибкой 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", поэтому мне не нужно сохранять номер порта в виде строки и номера или преобразовывать его явно ...

Ответы [ 4 ]

2 голосов
/ 06 декабря 2010

Возможно, неверный параметр при вызове getaddrinfo.Можете ли вы опубликовать больше кода?

Введите net helpmsg 122 в командной строке, и вы получите:

Область данных, переданная системному вызову, слишком мала.

1 голос
/ 06 декабря 2010

Проблема в вашей реализации operator const char*(). Как только эта функция вернется, ваш stringstream объект больше не будет действительным, потому что он больше не находится в области видимости.

1 голос
/ 06 декабря 2010

getaddrinfo фактически возвращает код ошибки, который вы должны проверить по значениям, указанным в документации getaddrinfo

0 голосов
/ 06 декабря 2010

Скорее всего, размер переменной pFinal слишком мал.Вам нужно будет опубликовать больше кода, чтобы получить более подробный ответ.

...