Подключение завершено код ошибки 10049

 

Сергей Яхонтов

Заглянувший

Сообщений: 6
Авторитет:

0

Регистрация: 16.02.2014

1С:Предприятие 8. Общепит
Подключение завершено.
Код ошибки = 10049 (URL = serv1:9099)
1С:Предприятие 8. Общепит (3.0.60.59)порт 9099 открыт.

 

Изменено: Сергей Яхонтов02.08.2018 12:57:31

 

Сергей Яхонтов

Заглянувший

Сообщений: 6
Авторитет:

0

Регистрация: 16.02.2014

ключи программные. Установлены на компьютер serv1

Изменено: Сергей Яхонтов02.08.2018 13:00:30

 

Светлана Рожок

Посетитель

Сообщений: 1836
Авторитет:

170

Регистрация: 05.06.2012

#3



0


02.08.2018 13:16:48

Цитата
Сергей Яхонтов написал:
1С:Предприятие 8. Общепит
Подключение завершено.
Код ошибки = 10049 (URL = serv1:9099)
1С:Предприятие 8. Общепит (3.0.60.59)порт 9099 открыт.

Добрый день.
При подключении не нужно указывать порт, или указать порт 15201.

 

Сергей Яхонтов

Заглянувший

Сообщений: 6
Авторитет:

0

Регистрация: 16.02.2014

#4



0


02.08.2018 13:29:17

Не указываю порт, а указываю компьютер и код доступа, получаю ошибку

Цитата
[02.08.2018 13:28:15]: 1С:Предприятие 8. Общепит
Не удалось создать подключение к серверу лицензирования на компьютере serv1. Рекомендуем проверить следующие пункты:
Указанный компьютер выключен.
На указанном компьютере не установлен или не запущен сервер лицензирования. Проверьте наличие и состояние службы «Сервер программного лицензирования конфигураций»
Проверьте сетевое оборудование, через которое осуществляется связь.

Сообщения операционной системы:

Ошибка при подключении к 192.168.1.235 —  Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
Код ошибки = 10000 (URL = serv1)

Прикрепленные файлы

Изменено: Сергей Яхонтов02.08.2018 13:32:10

 

Сергей Яхонтов

Заглянувший

Сообщений: 6
Авторитет:

0

Регистрация: 16.02.2014

#5



0


02.08.2018 13:34:00

В автоматическом поиске пишет

Цитата
Не удалось найти сервер лицензирования в режиме автоматического поиска.

Старт системы лицензирования завершился неудачно в режиме автоматического поиска Возможно сервер лицензирования не установлен, или не доступен для автоматического поиска. Рекомендуется изменить режим поиска сервера лицензирования на точное указание его адреса в сети. Для этого нажмите «Настроить адрес сервера лицензирования»
Код ошибки = 10027 (URL = *AUTO)

 

Добрый день.
Удалите в Панель управления — Программы и компоненты СЛК-Сервер и СЛК-Внешняя компонента.
Скачайте по ссылке и установите сборку

Сервер лицензирования v.2.0.4.308 и Сервер СЛК v.3.0.15.7488

Приложите скриншот веботчета на вкладке Список ключей. Для формирования веботчета в адресной строке браузера на сервере защиты наберите

http://127.0.0.1:15201/  

 

Сергей Яхонтов

Заглянувший

Сообщений: 6
Авторитет:

0

Регистрация: 16.02.2014

#7



0


02.08.2018 16:30:06

Установить надо только на основном компьютере или на обоих?Сейчас на основном компьютере показывает: Вроде теперь, на втором месте указав код доступа все заработало.
НО если меняешь параметры подключения — например на первом ставишь «Автопоиск», то и на втором аналогично ищет только через автопоиск.Если на втором задаешь параметры подключения, он заходит, а первый компьютер так же пытается подключиться к той же лицензииС:Предприятие 8. Общепит

Код
[02.08.2018 16:26:25]: Достигнуто максимальное количество пользователей
Код ошибки = 10033 (URL = serv1)

т.е. параметры сохраняются не для каждого компьютера, а общие на два. Как обойти это?

 

Светлана Рожок

Посетитель

Сообщений: 1836
Авторитет:

170

Регистрация: 05.06.2012

#8



0


02.08.2018 17:47:25

Цитата
Сергей Яхонтов написал:
Установить надо только на основном компьютере или на обоих?Сейчас на основном компьютере показывает:    Вроде теперь, на втором месте указав код доступа все заработало.
НО если меняешь параметры подключения — например на первом ставишь «Автопоиск», то и на втором аналогично ищет только через автопоиск.Если на втором задаешь параметры подключения, он заходит, а первый компьютер так же пытается подключиться к той же лицензииС:Предприятие 8. Общепит

Код
 [02.08.2018 16:26:25]: Достигнуто максимальное количество пользователей
Код ошибки = 10033 (URL = serv1) 

т.е. параметры сохраняются не для каждого компьютера, а общие на два. Как обойти это?

Вы ограничили подключение к ключу кодом доступа.
Если вы хотите использовать любую свободную лицензию, подключится к любому незанятому ключу, нужно удалить коды доступа.
Нажмите в веботчете на вкладке Список ключей на номер ключа, очистите поле Управление кодом доступа и нажмите кнопку Установить.

Lineage 2 – это игра, которую любят миллионы людей по всему миру. Но иногда пользователи сталкиваются с ошибками, которые могут испортить игровой процесс и вызвать много проблем. Одной из таких ошибок является код 10049.

Если вы столкнулись с ошибкой подключения к серверу Lineage 2 и видите сообщение с кодом 10049, то не стоит паниковать. Эта ошибка, как правило, связана с проблемами с сетью или настройками вашего компьютера.

В этой статье мы расскажем, как решить проблему с ошибкой кода 10049 в Lineage 2, чтобы вы могли наслаждаться игрой без ненужных проблем и перебоев в работе.

Содержание

  1. Причины возникновения ошибки 10049
  2. Проблемы с подключением
  3. Проблемы с антивирусной программой или брандмауэром
  4. Проблемы с DNS-сервером
  5. Проверка соединения с интернетом
  6. Проверьте оборудование
  7. Проверьте наличие подключения к Интернету
  8. Проверьте настройки брандмауэра
  9. Свяжитесь с поддержкой
  10. Проверка работы DNS-серверов
  11. Что такое DNS-серверы и как они работают?
  12. Как проверить работу DNS-серверов?
  13. Что делать, если DNS-серверы не работают?
  14. Проверка наличия активной защиты от вредоносных программ
  15. 1. Антивирусное ПО
  16. 2. Брандмауэр
  17. 3. Актуальные обновления
  18. Обновление драйвера сетевой карты
  19. Почему важно обновлять драйвер сетевой карты?
  20. Как обновить драйвер сетевой карты?
  21. Какие могут быть проблемы при обновлении драйвера сетевой карты?
  22. Заключение
  23. Обратная связь с технической поддержкой Lineage 2
  24. Как связаться с технической поддержкой?
  25. Что нужно предоставить?
  26. Как быстро получить ответ?
  27. Вопрос-ответ
  28. Что такое ошибка подключения код 10049 в Lineage 2?
  29. Как исправить ошибку подключения код 10049 в Lineage 2?
  30. Что делать, если ошибка подключения код 10049 в Lineage 2 появляется каждый раз при попытке подключения?
  31. Может ли быть проблема в антивирусной программе, вызывающей ошибку подключения код 10049 в Lineage 2?
  32. Какие способы еще есть для решения проблемы с ошибкой подключения код 10049 в Lineage 2?

Проблемы с подключением

Одной из основных причин ошибки 10049 являются проблемы с подключением. Это может быть связано с тем, что сервер Lineage 2 временно недоступен или существуют проблемы с интернет-подключением на вашей стороне.

Проблемы с антивирусной программой или брандмауэром

Другой возможной причиной ошибки может стать блокировка игры антивирусной программой или брандмауэром. Это может произойти, если файлы, связанные с игрой, отмечены как потенциально опасные для системы.

Проблемы с DNS-сервером

Еще одной причиной ошибки 10049 могут стать проблемы с DNS-сервером. DNS-серверы отвечают за перевод доменных имен в IP-адреса, то есть за установление соединения с сервером игры. Если DNS-сервер не работает правильно, то соединение невозможно.

При возникновении ошибки 10049 необходимо проанализировать возможные причины и попытаться решить проблему. В некоторых случаях может потребоваться обратиться за поддержкой к провайдеру интернет-услуг или разработчикам игры.

Проверка соединения с интернетом

Проверьте оборудование

Первым шагом в проверке соединения с интернетом является проверка вашего оборудования. Убедитесь, что ваш маршрутизатор включен и подключен к сети. Также проверьте, что все кабели подключены должным образом.

Проверьте наличие подключения к Интернету

Если вы уверены, что все кабели подключены правильно, проверьте, имеете ли вы активное подключение к Интернету. Для этого откройте любой браузер и перейдите на любую страницу в Интернете.

Если вы не можете открыть ни одну страницу в Интернете, ваше подключение к Интернету, вероятно, неактивно. Свяжитесь со своим провайдером Интернета, чтобы решить эту проблему.

Проверьте настройки брандмауэра

Если у вас есть активное подключение к Интернету, но вы все еще не можете подключиться к игровому серверу, проблема может быть связана с настройками вашего брандмауэра. Убедитесь, что брандмауэр разрешает подключение к игровому серверу или временно отключите его, чтобы проверить, решит ли это проблему.

Свяжитесь с поддержкой

Если вы все еще не можете подключиться к игровому серверу после проверки вышеуказанных пунктов, свяжитесь с поддержкой игры или вашего провайдера Интернета.

Проверка работы DNS-серверов

Что такое DNS-серверы и как они работают?

DNS-серверы это компьютеры, которые содержат базу данных доменных имен и их соответствующих IP-адресов. Когда вы вводите веб-адрес в браузере, компьютер отправляет запрос на DNS-серверы, чтобы узнать, какой IP-адрес соответствует этому доменному имени. После того, как DNS-сервер возвращает IP-адрес, компьютер может установить соединение с веб-сайтом.

Как проверить работу DNS-серверов?

Если у вас возникает ошибка подключения код 10049 в Lineage 2, возможно проблема кроется в работе DNS-серверов. Для проверки работы DNS-серверов можно использовать команду Ping в командной строке. Например, введите команду «ping google.com» и посмотрите на результат. Если вы получили ответ от сервера с IP-адресом, то DNS-сервер работает корректно.

Что делать, если DNS-серверы не работают?

Если DNS-серверы не работают, то вы не сможете установить соединение с веб-сайтами по доменным именам. Для решения проблемы можно попробовать перезагрузить роутер и компьютер. Если это не помогло, то можно изменить адрес DNS-серверов, используемых вашим компьютером или роутером. В качестве альтернативных DNS-серверов можно использовать открытые DNS-серверы от Google (8.8.8.8 и 8.8.4.4) или Cloudflare (1.1.1.1 и 1.0.0.1).

Проверка наличия активной защиты от вредоносных программ

1. Антивирусное ПО

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

Проверить наличие активной защиты от вредоносных программ можно путем сканирования вашего компьютера на наличие вирусов. Если сканирование обнаружит подозрительный файл, ваш антивирус должен проверить его и удалить, если это необходимо.

2. Брандмауэр

Дополнительно можно проверить наличие активной защиты, используя брандмауэр. Брандмауэр помогает защитить ваш компьютер от вредоносных программ, блокируя попытки входа и выхода из вашей сети. Для проверки состояния брандмауэра следует перейти в настройки системы и выбрать соответствующий раздел. Убедитесь, что ваш брандмауэр включен и имеет актуальные настройки.

3. Актуальные обновления

Для устранения проблем с подключением к игре, необходимо также периодически проверять наличие обновлений для вашего ПО. Актуальные обновления важны не только для корректной работы ПО, но и для обеспечения защиты ваших данных от вредоносных программ.

  • Проверьте, что ваша операционная система имеет последние обновления и исправления.
  • Убедитесь в том, что установленные на ваш компьютер ПО также имеет последние обновления.

Все перечисленные меры помогут вам защитить ваш компьютер и обеспечить корректную работу игры.

Обновление драйвера сетевой карты

Почему важно обновлять драйвер сетевой карты?

Драйвер сетевой карты — это программа, которая обеспечивает работу вашего устройства сетевого подключения. Этот драйвер занимается обработкой данных, передаваемых из сети в ваш компьютер и обратно. В связи с этим, его обновление необходимо для улучшения производительности и безопасности вашей сетевой связи. Новая версия драйвера может исправить ошибки, устранить уязвимости в безопасности и улучшить совместимость с другими устройствами в сети.

Как обновить драйвер сетевой карты?

  • Проверьте, какая модель сетевой карты установлена в вашем компьютере.
  • Зайдите на сайт производителя и найдите раздел загрузки драйверов.
  • Выберите соответствующую модель сетевой карты и загрузите последнюю версию драйвера.
  • Установите драйвер, следуя инструкциям на экране.
  • Перезагрузите компьютер, чтобы изменения вступили в силу.

Какие могут быть проблемы при обновлении драйвера сетевой карты?

При обновлении драйвера сетевой карты могут возникнуть ошибки, такие как несовместимость драйвера или неправильное распознавание устройства. Если у вас возникли проблемы после обновления, верните предыдущую версию драйвера или свяжитесь с производителем устройства, чтобы получить помощь.

Заключение

Обновление драйвера сетевой карты может помочь устранить ошибку подключения код 10049 в игре Lineage 2, а также повысить безопасность и производительность вашей сетевой связи в целом. Следуйте инструкциям на сайте производителя, чтобы обновить драйвер, и в случае проблем обратитесь к технической поддержке.

Обратная связь с технической поддержкой Lineage 2

Как связаться с технической поддержкой?

Если вы столкнулись с проблемой в игре Lineage 2 и не можете ее решить, то вам необходимо обратиться в техническую поддержку. Для этого перейдите на официальный сайт игры и выберите раздел «Поддержка», где вы сможете найти ссылку на обращение в поддержку.

Также, вы можете написать на официальные страницы и группы Lineage 2 в социальных сетях, таких как Facebook и Twitter. Техническая поддержка часто отвечает на пользовательские вопросы в комментариях и личных сообщениях.

Что нужно предоставить?

Для более быстрого и эффективного решения проблемы, обязательно предоставляйте следующую информацию:

  • Ваш игровой никнейм (имя персонажа в игре)
  • Сервер, на котором играете
  • Описание проблемы
  • Скриншот ошибки, если есть
  • Лог файлы, если есть

Как быстро получить ответ?

Техническая поддержка старается ответить на все обращения в течение 24-48 часов. В более сложных случаях решение проблемы может занять больше времени. Чтобы получить более быстрый ответ, обязательно предоставьте всю необходимую информацию и описывайте проблему максимально подробно.

Также учтите, что вы можете столкнуться с большим количеством обращений в пиковые периоды, такие как выходные и праздники, поэтому не стесняйтесь напоминать о своем обращении через несколько дней, если не получили ответ.

Вопрос-ответ

Что такое ошибка подключения код 10049 в Lineage 2?

Ошибка подключения код 10049 в Lineage 2 — это ошибка, которая возникает при попытке подключения к игре. Ошибка может быть вызвана разными факторами, включая проблемы с интернет-подключением, неправильные настройки компьютера или ошибку в работе игры.

Как исправить ошибку подключения код 10049 в Lineage 2?

Существует несколько способов исправления ошибки подключения код 10049 в Lineage 2. Один из них — проверить свое интернет-подключение и убедиться, что оно работает исправно. Также можно попробовать перезагрузить роутер и модем. Если это не помогло, можно попробовать изменить настройки на своем компьютере или переустановить игру.

Что делать, если ошибка подключения код 10049 в Lineage 2 появляется каждый раз при попытке подключения?

Если ошибка подключения код 10049 в Lineage 2 появляется каждый раз при попытке подключения, то нужно более глубоко испытать свое интернет-подключение. Может быть, проблема в вашем провайдере или с оборудованием на вашей стороне. Если вы не можете самостоятельно решить проблему, то лучше обратиться к технической поддержке вашего интернет-провайдера.

Может ли быть проблема в антивирусной программе, вызывающей ошибку подключения код 10049 в Lineage 2?

Да, проблема с антивирусной программой может быть одной из причин ошибки подключения код 10049 в Lineage 2. Если у вас установлен антивирус, то сначала попробуйте отключить его временно и проверить, помогает ли это. Если да, то нужно настроить антивирус для работы с игрой.

Какие способы еще есть для решения проблемы с ошибкой подключения код 10049 в Lineage 2?

Еще один способ решения проблемы с ошибкой подключения код 10049 в Lineage 2 — это проверка наличия обновлений игры и их установка. Также стоит убедиться, что у вас установлена самая последняя версия драйверов для вашей видеокарты. Если вы используете какое-то программное обеспечение для оптимизации компьютера, то также можете попробовать воспользоваться им для исправления ошибки.

i wrote a class encapsulating some of the winsock functions to imitate a simple TCP socket for my needs…

When i try to run a simple connect-and-send-data-to-server test the «client» fails on its call to connect with the error code of 10049 (WSAEADDRNOTAVAIL) connect function on MSDN

What I am doing is (code below):
Server:

  1. Create a Server Socket -> Bind it to Port 12345
  2. Put the Socket in listen mode
  3. Call accept

Client

  1. Create a socket -> Bind it to a random port
  2. Call Connect: connect to localhost, port 12345

=> the call to connect fails with Error 10049, as described above

Here is the main function including the «server»:

HANDLE hThread = NULL;
Inc::CSocketTCP ServerSock;
Inc::CSocketTCP ClientSock;

try
{

    ServerSock.Bind(L"", L"12345");
    ServerSock.Listen(10);

    //Spawn the senders-thread
    hThread = (HANDLE)_beginthreadex(nullptr, 0, Procy, nullptr, 0, nullptr);

    //accept
    ServerSock.Accept(ClientSock);


    //Adjust the maximum packet size
    ClientSock.SetPacketSize(100);


    //receive data
    std::wstring Data;
    ClientSock.Receive(Data);

    std::wcout << "Received:t" << Data << std::endl;
}
catch(std::exception& e)
{...

Client thread function

unsigned int WINAPI Procy(void* p)

{

Sleep(1500);
try{
    Inc::CSocketTCP SenderSock;
    SenderSock.Bind(L"", L"123456");

    SenderSock.Connect(L"localhost", L"12345");


    //Adjust packet size
    SenderSock.SetPacketSize(100);

    //Send Data
    std::wstring Data = L"Hello Bello!";
    SenderSock.Send(Data);
}
catch(std::exception& e)
{
    std::wcout << e.what() << std::endl;
}...

The Connect-Function

    int Inc::CSocketTCP::Connect(const std::wstring& IP, const std::wstring& Port)
{
    //NOTE: assert that the socket is valid
    assert(m_Socket != INVALID_SOCKET);

    //for debuggin: convert WStringToString here
    std::string strIP = WStringToString(IP), strPort = WStringToString(Port);

    Incgetaddrinfo AddyResolver;
    addrinfo hints = {}, *pFinal = nullptr;

    hints.ai_family = AF_INET;

    //resolve the ip/port-combination for the connection process
    INT Ret = AddyResolver(strIP.c_str(), strPort.c_str(), &hints, &pFinal);
    if(Ret)
    {
        //error handling: throw an error description
        std::string ErrorString("Resolving Process failed (Connect): ");
        ErrorString.append(Inc::NumberToString<INT>(Ret));
        throw(std::runtime_error(ErrorString.c_str()));
    }


    /*---for debbuging---*/
    sockaddr_in *pP = (sockaddr_in*)(pFinal->ai_addr);
    u_short Porty = ntohs(pP->sin_port);
    char AddBuffer[20] = "";

    InetNtopA(AF_INET, (PVOID)&pP->sin_addr, AddBuffer, 20);
    /*--------------------------------------------------------*/


    if(connect(m_Socket, pFinal->ai_addr, pFinal->ai_addrlen) == SOCKET_ERROR)
    {
        int ErrorCode = WSAGetLastError();
        if((ErrorCode == WSAETIMEDOUT) || (ErrorCode == WSAEHOSTUNREACH) || (ErrorCode == WSAENETUNREACH))
        {
            //Just Unreachable
            return TCP_TARGETUNREACHABLE;
        }

        //real errors now
        std::string ErrorString("Connection Process failed: ");
        ErrorString.append(Inc::NumberToString<int>(ErrorCode));
        throw(std::runtime_error(ErrorString.c_str()));
    }

    return TCP_SUCCESS;
}

Additional Information:
-Incgetaddrinfo is a function object encapuslating getaddrinfo…
-Noone of the server functions return any error and work as expected when stepping through them using the debugger or when letting them run solely…

I’d be glad to hear your suggestions what the rpoblem might be…

Edit: It works when I dont connect to ("localhost","12345"), but to ("",12345)
When look into the address resolution process of getaddrinfo it gives 127.0.0.1 for "localhost" and my real IP for ""

Why doesn’t it work with my loopback-IP?

#c #windows #visual-studio #sockets #winsock

#c #Windows #visual-studio #сокеты #winsock

Вопрос:

Я новичок в программировании сокетов, и это моя первая серверно-клиентская программа. Сначала программа работала отлично, но когда я скопировал свой код из Server.c и Client.c в новый проект в Visual Studio, мой клиент теперь отказывается подключаться и выдает ошибку 10049. Я все еще могу подключиться к своему серверу, если использую telnet из командной строки.

Я удивлен, почему мой клиент перестает работать, когда я копирую код в другой пустой проект, больше ничего не изменилось.

Я пытался изменить IP-адреса, номера портов и переадресацию портов, используя свой общедоступный адрес, но безрезультатно. Я подтвердил IP-адрес своего компьютера с помощью ipconfig, и он правильно введен в моем коде, а также номер порта. Программа компилируется нормально, без каких-либо ошибок.

Server.c

 #include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <WS2tcpip.h>


#pragma comment (lib, "Ws2_32.lib")

void start_server(const char* ip_address, int port_number);
int server_sock, client_sock;

void main(int argc, char* argv[])
{
    start_server("192.168.0.24", 100);
    system("pause");    
}

void start_server(const char* ip_address, int port_number)
{
    WSADATA wsaData;

    int iResult = WSAStartup(MAKEWORD(2, 2), amp;wsaData);
    if (iResult != NO_ERROR) {
        wprintf(L"WSAStartup() failed with error: %dn", iResult);
        return 1;
    }

    struct sockaddr_in server_addr;
    memset(amp;server_addr, 0, sizeof(server_addr));

    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(port_number);
    InetPton(AF_INET, "", amp;server_addr.sin_addr.s_addr);

    server_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (server_sock == INVALID_SOCKET)
    {
        printf(L"Socket creation failed with error: %ldn", WSAGetLastError());
    }
    else
    {
        printf("Socket created!n");
    }

    int bind_status = bind(server_sock, (struct sockaddr*) amp; server_addr, sizeof(server_addr));
    if (bind_status == SOCKET_ERROR) {
        wprintf(L"bind failed with error: %ldn", WSAGetLastError());
    }
    else
    {
        printf("Bind was successful!n");
    }

    int listen_status = listen(server_sock, 3);
    if (listen_status == -1) 
    {
        wprintf(L"listen failed with error: %ldn", WSAGetLastError());
    }
    else
    {
        printf("Listening...n");
    }

    client_sock = accept(server_sock, NULL, NULL);
    if (client_sock == -1)
    {
        wprintf(L"client socket failed with error: %ldn", WSAGetLastError());
    }
    else
    {
        printf("Accepted new client!n");
    }
}
  

Client.c

 #include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <WS2tcpip.h>

#pragma comment (lib, "Ws2_32.lib")


void connect_server(const char* ip_address, int port_number);

int sock;

void main()
{
    connect_server("192.168.0.24", 100);
    send(sock, "test", 5, 0);
    system("pause");
}

void connect_server(const char* ip_address, int port_number)
{
    WSADATA wsaData;

    int iResult = WSAStartup(MAKEWORD(2, 2), amp;wsaData);
    if (iResult != NO_ERROR) {
        wprintf("WSAStartup() failed with error: %dn", iResult);
        exit(1);
    }

    struct sockaddr_in server_addr;
    memset(amp;server_addr, 0, sizeof(server_addr));

    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(port_number);
    InetPton(AF_INET, ip_address, amp;server_addr.sin_addr.s_addr);

    sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (sock == INVALID_SOCKET)
    {
        printf("Socket creation failed with error: %dn", WSAGetLastError());
    }
    else
    {
        printf("Socket created!n");
    }

    int connection_status = connect(sock, (struct sockaddr *) amp;server_addr, sizeof(server_addr));
    if (connection_status == SOCKET_ERROR)
    {
        printf("Connection failed with error: %dn", WSAGetLastError());
    }
    else
    {
        printf("Connected.n");
    }
}
  

Комментарии:

1. в коде сервера это утверждение: void main(int argc, char* argv[]) приведет к тому, что компилятор выдаст два предупреждающих сообщения о неиспользуемых параметрах. Предлагаю использовать: int main( void )

2. на сервере, в отношении: printf(L"Socket creation failed with error: %ldn", WSAGetLastError()); и wprintf(L"bind failed with error: %ldn", WSAGetLastError()); 1) сообщения об ошибках должны выводиться на stderr , а не stdout предлагать использовать fprintf( stderr, .... ) 2) при возникновении ошибки, было бы время для выхода из программы, возможно, с помощью: exit( EXIT_FAILURE );

3. OT: код сервера ничего не может сделать после установления соединения с клиентом

4. OT: сокеты имеют тип sock_t , который может совпадать с, int но код не должен предполагать эту связь

5. относительно: wprintf("WSAStartup() failed with error: %dn", iResult); функция: wprintf() ожидает, что текст будет «широким», а не ascii. Таким образом, оператор должен быть: wprintf(L"WSAStartup() failed with error: %dn", iResult);

Ответ №1:

Очень быстрый / простой поиск WSA error 10049 результатов в:

Ошибка Winsock 10049 обычно возникает при попытке создать сокет с адресом, которого нет на этом компьютере. Например, если у вас есть MDaemon, запущенный на компьютере с IP-адресом 192.168.0.1, и вы пытаетесь привязать MDaemon к 192.168.0.100, вы получите это сообщение об ошибке.

Итак, вам необходимо исправить IP-адрес для нового компьютера.

Комментарии:

1. Я упоминал об этом в своем вопросе, IP-адрес правильный для моего компьютера. Это не изменилось, потому что я отключил автоматическое назначение IP-адреса.

Ответ №2:

Попробуйте использовать свой код с обратным адресом 127.0.0.1. Если это сработает, то проблема определенно связана с комбинацией IP и номера порта. Возможно, используйте ipconfig / reset для сброса вашего IP-адреса.

Я написал класс, инкапсулирующий некоторые функции winsock, чтобы имитировать простой сокет TCP для моих нужд…

Когда я пытаюсь запустить простой тест подключения и отправки данных на сервер, «клиент» не может подключиться к нему с кодом ошибки 10049 (WSAEADDRNOTAVAIL), функция подключения на MSDN

Что я делаю, это (код ниже): Сервер:

  1. Создайте сокет сервера -> привяжите его к порту 12345
  2. Переведите сокет в режим прослушивания
  3. Звонок принять

клиент

  1. Создать сокет -> привязать его к случайному порту
  2. Call Connect: подключение к локальному хосту, порт 12345

=> сбой вызова для соединения с ошибкой 10049, как описано выше

Вот основная функция, включая «сервер»:

HANDLE hThread = NULL;
Inc::CSocketTCP ServerSock;
Inc::CSocketTCP ClientSock;

try
{

    ServerSock.Bind(L"", L"12345");
    ServerSock.Listen(10);

    //Spawn the senders-thread
    hThread = (HANDLE)_beginthreadex(nullptr, 0, Procy, nullptr, 0, nullptr);

    //accept
    ServerSock.Accept(ClientSock);


    //Adjust the maximum packet size
    ClientSock.SetPacketSize(100);


    //receive data
    std::wstring Data;
    ClientSock.Receive(Data);

    std::wcout << "Received:t" << Data << std::endl;
}
catch(std::exception& e)
{...

Функция клиентского потока

unsigned int WINAPI Procy(void* p)

{

Sleep(1500);
try{
    Inc::CSocketTCP SenderSock;
    SenderSock.Bind(L"", L"123456");

    SenderSock.Connect(L"localhost", L"12345");


    //Adjust packet size
    SenderSock.SetPacketSize(100);

    //Send Data
    std::wstring Data = L"Hello Bello!";
    SenderSock.Send(Data);
}
catch(std::exception& e)
{
    std::wcout << e.what() << std::endl;
}...

Функция подключения

    int Inc::CSocketTCP::Connect(const std::wstring& IP, const std::wstring& Port)
{
    //NOTE: assert that the socket is valid
    assert(m_Socket != INVALID_SOCKET);

    //for debuggin: convert WStringToString here
    std::string strIP = WStringToString(IP), strPort = WStringToString(Port);

    Incgetaddrinfo AddyResolver;
    addrinfo hints = {}, *pFinal = nullptr;

    hints.ai_family = AF_INET;

    //resolve the ip/port-combination for the connection process
    INT Ret = AddyResolver(strIP.c_str(), strPort.c_str(), &hints, &pFinal);
    if(Ret)
    {
        //error handling: throw an error description
        std::string ErrorString("Resolving Process failed (Connect): ");
        ErrorString.append(Inc::NumberToString<INT>(Ret));
        throw(std::runtime_error(ErrorString.c_str()));
    }


    /*---for debbuging---*/
    sockaddr_in *pP = (sockaddr_in*)(pFinal->ai_addr);
    u_short Porty = ntohs(pP->sin_port);
    char AddBuffer[20] = "";

    InetNtopA(AF_INET, (PVOID)&pP->sin_addr, AddBuffer, 20);
    /*--------------------------------------------------------*/


    if(connect(m_Socket, pFinal->ai_addr, pFinal->ai_addrlen) == SOCKET_ERROR)
    {
        int ErrorCode = WSAGetLastError();
        if((ErrorCode == WSAETIMEDOUT) || (ErrorCode == WSAEHOSTUNREACH) || (ErrorCode == WSAENETUNREACH))
        {
            //Just Unreachable
            return TCP_TARGETUNREACHABLE;
        }

        //real errors now
        std::string ErrorString("Connection Process failed: ");
        ErrorString.append(Inc::NumberToString<int>(ErrorCode));
        throw(std::runtime_error(ErrorString.c_str()));
    }

    return TCP_SUCCESS;
}

Дополнительная информация:-Incgetaddrinfo — это объект функции, инкапсулирующий getaddrinfo… -Никто из серверных функций не возвращает никаких ошибок и не работает так, как ожидалось, когда проходил через них с помощью отладчика или позволял им работать только…

Я был бы рад услышать ваши предложения, что может быть проблема…

Изменить: это работает, когда я не подключаюсь к ("localhost","12345"), но для ("",12345)… Когда посмотрите на процесс разрешения адресов getaddrinfo это дает 127.0.0.1 для "localhost" и мой реальный IP для ""

Почему это не работает с моим loopback-IP?

Понравилась статья? Поделить с друзьями:
  • Подключение впн ошибка 807
  • Подключение ps3 к интернету ошибка dns
  • Подключение javascript ошибки
  • Поджав лаунчер ошибка 1
  • Поддержка usb принтера ошибка код 10