Почему получен неверный сокет только в режиме отладки Eclipse? - PullRequest
0 голосов
/ 25 июня 2018

В eclipse C ++ я получил неверный сокет при запуске режима отладки. Ошибка WSAEPROVIDERFAILEDINIT. Я получил эту ошибку при использовании только отладчика. Начиная с run, создание сокета прошло успешно. В VisualStudio один и тот же код выполняется в режиме отладки и выпуска.

Отладка с помощью eclipse и mingw работает нормально, когда сокет не используется.
Кажется, это проблема с конфигурацией gdb, потому что eclipse использует один и тот же exe-файл независимо от того, запускаю ли я с run или с отладкой (нет изменения метки времени, на котором я меняю конфигурацию).

Конфигурация: eclipse 4.6.3, Mingw32-gcc-g ++ V6.3.0-1, я связал libws2_32 из \ Mingw \ lib, под Windows 10, 64-битная версия.
\ Mingw \ bin добавляется к переменной пути в Windows и в самом Eclipse.

Это код:

#include <iostream>
#include <windows.h>
#include <winsock2.h>

using namespace std;

int main()
{
    WORD sockVer = MAKEWORD(2, 0);
    WSADATA wsaData;
    SOCKET listener;
    SOCKADDR_IN servInfo;

    servInfo.sin_family = AF_INET;
    servInfo.sin_addr.s_addr = INADDR_ANY;
    servInfo.sin_port = htons(80);

    WSAStartup(sockVer, &wsaData);

    listener = socket(servInfo.sin_family, SOCK_STREAM, IPPROTO_TCP);

    if (listener == INVALID_SOCKET)
    {
        int lastErr = WSAGetLastError();
        cout << "Error = " << lastErr << endl;
    }
    else
    {
        cout << "Listener = " << listener << endl;
    }

    return 0;
}

1 Ответ

0 голосов
/ 27 июня 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...