Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 10.03.2022
Сообщений: 33

Начинаю работать с boost/asio

24.11.2022, 20:33. Показов 4860. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Только начал работать с сетевым программированием. Сначала написал программу используя Winsock, и написал локальный Мессенджер. С этим вопросов не было, все получилось. Мне стало интересно теперь это реализовать через интернет соединение. В результате поиска понял, что тут уже лучше использовать boost/asio. Стандартный сервер/клиент c сайта boost. Тут начались проблемки: при вводе локального хоста либо серого ip ПК: Выводится заветное :"подключено". Если же ввести белый ip ПК(его посмотрел в окне роутера) получаю :

connect: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение [system:10061 at C:\Users\praum\OneDrive\Р Р°Р+Р?С╪РёР№ С?С'Р?Р>\РёР?С"Р?С?\client\packages\boos t.1.80.0\lib\native\include\boost\asio\d etail\win_iocp_socket_service.hpp:632:5 in function 'connect']

Но этот результат уже радует ибо если вводить другие ip получаю:

connect: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера [system:10060 at C:\Users\praum\OneDrive\Р Р°Р+Р?С╪РёР№ С?С'Р?Р>\РёР?С"Р?С?\client\packages\boos t.1.80.0\lib\native\include\boost\asio\d etail\win_iocp_socket_service.hpp:632:5 in function 'connect']

С чего сделал вывод что подключается он куда надо. Брандмауэр отключен. Может ли проблема быть из-за того что обе программы запускаю на одном пк и для локалки это норма а для онлайна нет). Прикрепляю код сервера и клиента. Хелп cry:. в коде оставил локальный хост) для анонимности, боюсь местных хакеров.
Клиент:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <boost/array.hpp>
#include <boost/asio.hpp>
 
using boost::asio::ip::tcp;
 
int main(int argc[2], char* argv[])
{
    setlocale(LC_ALL, "Russian");
    try
    {
        boost::asio::io_context io_context;
        tcp::resolver resolver(io_context);
        tcp::resolver::results_type endpoints = resolver.resolve("127.0.0.1", "33");
        tcp::socket socket(io_context);
        boost::asio::connect(socket, endpoints);
        for (;;)
        {
            boost::array<char, 128> buf;
            boost::system::error_code error;
            size_t len = socket.read_some(boost::asio::buffer(buf), error);
            if (error == boost::asio::error::eof)
                break;
            else if (error)
                throw boost::system::system_error(error); 
            std::cout.write(buf.data(), len);
        }
    }
    catch (std::exception& e)
    {
        std::cerr << e.what() << std::endl;
    }
 
    return 0;
}
Сервер:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <string>
#include <boost/asio.hpp>
 
using boost::asio::ip::tcp;
int main()
{
    try
    {
        boost::asio::io_context io_context;
        tcp::acceptor acceptor(io_context, tcp::endpoint(tcp::v4(), 33));
        for (;;)
        {
            tcp::socket socket(io_context);
            acceptor.accept(socket);
            std::string message = "Подключено!";
            boost::system::error_code ignored_error;
            boost::asio::write(socket, boost::asio::buffer(message), ignored_error);
        }
    }
    catch (std::exception& e)
    {
        std::cerr << e.what()<<"123" << std::endl;
    }
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.11.2022, 20:33
Ответы с готовыми решениями:

boost/asio
Который день маюсь с поиском достойного материала для изучения данной библиотеки(boost/asio) с нуля. Со стандартными сокетами знаком по...

boost asio
Что-то не работает... Окошко abort() и конец. Что делать? #ifdef _WIN32 #define _WIN32_WINNT 0x0A00 #endif #include...

Асинхронность в boost asio
Доброго времени суток! Хотелось мне сделать обертку вокруг асио. Чтобы обьект класса в одно время был сервером, в другое клиентом. Чтобы...

10
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
24.11.2022, 21:09
Цитата Сообщение от Praumud Посмотреть сообщение
33
А порт-то на роутере проброшен на ip локального компьютера?
0
Модератор
Эксперт Java
 Аватар для alecss131
2863 / 1369 / 409
Регистрация: 11.08.2017
Сообщений: 4,392
Записей в блоге: 2
24.11.2022, 21:35
Цитата Сообщение от DrOffset Посмотреть сообщение
А порт-то на роутере проброшен на ip локального компьютера?
Не поможет, провайдер блокирует все соединения, спасет только либо покупка внешнего ip у провайдера, либо эмулятор локалки.

Добавлено через 1 минуту

Не по теме:

По бусту есть отдельный раздел

0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
24.11.2022, 21:39
Цитата Сообщение от alecss131 Посмотреть сообщение
Не поможет, провайдер блокирует все соединения, спасет только либо покупка внешнего ip у провайдера, либо эмулятор локалки.
Мой ответ исходил из соображений ниже: насколько я понял, у ТС и так уже есть белый IP, который прописан в роутере, где он его и посмотрел:
Цитата Сообщение от Praumud Посмотреть сообщение
Если же ввести белый ip ПК(его посмотрел в окне роутера)
Если все так, как я понял, то мой ответ совершенно корректен: автору необходимо донастроить свой роутер и пробросить нужный порт на один из компьютеров в его локальной сети.
0
Модератор
Эксперт Java
 Аватар для alecss131
2863 / 1369 / 409
Регистрация: 11.08.2017
Сообщений: 4,392
Записей в блоге: 2
24.11.2022, 21:46
DrOffset, Извиняюсь, невнимательно прочитал первый пост.
ip лучше смотреть на сайтах по типу 2ip
0
0 / 0 / 0
Регистрация: 10.03.2022
Сообщений: 33
24.11.2022, 22:34  [ТС]
Спасибо за ответ. Перейдя на сайт я получил ip роутера (как я понял), этот же ip можно получить если просто загуглить "мой ip".
При его вводе я получаю худший результат:

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

А ip который я называю белым, беру с сайта моего мобильного роутера (прикладываю скрин):
Эти ip совершенно разные, с ip c сайта роутера наилучший результат
Миниатюры
Начинаю работать с boost/asio  
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
24.11.2022, 22:38
Цитата Сообщение от Praumud Посмотреть сообщение
А IP который я называю белым, беру с сайта моего мобильного роутера
Тогда действительно ничего не получится. У вас фактически нет белого IP, этот IP шлюза провайдера и у вас нет к нему доступа для какой-либо настройки.
1
0 / 0 / 0
Регистрация: 10.03.2022
Сообщений: 33
24.11.2022, 22:41  [ТС]
Добавлено через 1 минуту
Спасибо за ответ). То есть только покупка белого ip у провайдера либо эмуляторы по типу hamachi?

Добавлено через 52 секунды
Спасибо за ответ). То есть только покупка белого ip у провайдера либо эмуляторы по типу hamachi?
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
24.11.2022, 22:43
Лучший ответ Сообщение было отмечено Praumud как решение

Решение

Цитата Сообщение от Praumud Посмотреть сообщение
То есть только покупка белого ip у провайдера либо эмуляторы по типу hamachi?
Да.
Можно еще попробовать какой-нибудь бесплатный\дешевый vps и использовать его в качестве маршрутизатора.
1
Модератор
Эксперт Java
 Аватар для alecss131
2863 / 1369 / 409
Регистрация: 11.08.2017
Сообщений: 4,392
Записей в блоге: 2
24.11.2022, 22:44
Лучший ответ Сообщение было отмечено Praumud как решение

Решение

Цитата Сообщение от Praumud Посмотреть сообщение
То есть только покупка белого ip у провайдера либо эмуляторы по типу hamachi?
Ага, только из эмуляторов я бы посоветовал ZeroTier One, он посложнее в настройке, но куда лучше хамачи и по скорости и по надежности
1
0 / 0 / 0
Регистрация: 10.03.2022
Сообщений: 33
24.11.2022, 23:01  [ТС]
ip:порт не более 65536 соединений одновременно, потому что именно столько портов доступно в протоколах TCP и UDP.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.11.2022, 23:01
Помогаю со студенческими работами здесь

Boost::asio в глобальной сети
Я следовал инструкциям на официальном сайте boost http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/tutorial/tutdaytime1.html . ...

Клиент с использованием boost::asio
Пытаюсь написать клиентское приложение, которое общается с сервером, однако проблема заключается в том, что сервер помимо того, что...

Boost.Asio cerr output
Всем привет, долго мучался чтобы поставить boost asio, но вроде все получилось сделать корректно. Однако есть один раздражающий фактор:...

Хорошая документация по boost.asio
Есть какая-то хорошая документация по boost.asio?

Boost asio работа с множественными подключениями
Добрый день,начал изучение boost::asio,разобрался в основах,возник вопрос как работать с множественными подключениями. Например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru