Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607

Грамотное завершение успешного обмена

24.01.2020, 06:13. Показов 1252. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, подскажите пожалуйста, кто должен завершать успешный обмен данными между клиентом и сервером ? Клиент или сервер ?
И как серевер( boost::asio) может асинхронно узнать что клиент разорвал соединение, если сервер все операции уже выполнил ?

Добавлено через 9 минут
Ещё непонятно каким методом лучше разрывать соединение close или shutdown
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.01.2020, 06:13
Ответы с готовыми решениями:

Обработка успешного платежа
Всем привет уважаемые мастеры? мне нужно помощь для обработки платежа и зачисление в mysql API есть и оно работает щас, только в API...

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

График вероятностей успешного разговора
Как получить график распределения вероятностей успешного разговора в зависимости от числа абонентов в сети? Вот код программы: ...

14
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
24.01.2020, 09:15
Цитата Сообщение от squareroot Посмотреть сообщение
Добрый день, подскажите пожалуйста, кто должен завершать успешный обмен данными между клиентом и сервером ? Клиент или сервер ?
Зависит от задачи которую ты решаешь. Обычно клиент инициирует запрос, он его и завершает, разрывает коннект.
Цитата Сообщение от squareroot Посмотреть сообщение
И как серевер( boost::asio) может асинхронно узнать что клиент разорвал соединение, если сервер все операции уже выполнил ?
Сервер слушает соединение и видит, когда оно разрывается
Цитата Сообщение от squareroot Посмотреть сообщение
Ещё непонятно каким методом лучше разрывать соединение close или shutdown
close. Можно перед его вызовом сделать shutdown
0
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
24.01.2020, 09:36  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Сервер слушает соединение и видит, когда оно разрывается
Конкретно в boost::asio как ?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
24.01.2020, 09:40
Цитата Сообщение от squareroot Посмотреть сообщение
Конкретно в boost::asio как ?
Не знаю, но там способов немного - select, poll, в виндах ещё, наверное, iocp
0
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
24.01.2020, 11:53  [ТС]
oleg-m1973, Вопрос, если сервер сразу после успешного обмена сам разорвёт соединение, то может ли это привести к ложной ошибке на стороне клиента ?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
24.01.2020, 12:01
Цитата Сообщение от squareroot Посмотреть сообщение
oleg-m1973, Вопрос, если сервер сразу после успешного обмена сам разорвёт соединение, то может ли это привести к ложной ошибке на стороне клиента ?
Клиент также увидит, что сервер разорвал соединение.
А вот насчёт успеет ли он получить все данные, которые отправил сервер, перед тем как разорвать соединение - не помню.
Я так никогда не делал. У меня клиент посылает запрос, получает ответ и разрывает соединение, если надо.
0
24.01.2020, 12:42

Не по теме:

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А вот насчёт успеет ли он получить все данные, которые отправил сервер, перед тем как разорвать соединение - не помню.
https://blog.netherlabs.nl/art... t-reliable

0
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
24.01.2020, 12:48  [ТС]
Цитата Сообщение от GbaLog- Посмотреть сообщение
Почему не по теме ? Очень даже по теме. Только вывод какой ?
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
24.01.2020, 13:51
Цитата Сообщение от squareroot Посмотреть сообщение
Только вывод какой ?
ну, вы прочтите статью.
коротко shutdown -> read until eof -> close.
у boost.asio есть специальный код: boost::asio::error::eof.
0
 Аватар для TheAthlete
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 575
24.01.2020, 18:42
Цитата Сообщение от squareroot Посмотреть сообщение
кто должен завершать успешный обмен данными между клиентом и сервером ? Клиент или сервер ?
Обычно это делает сервер с помощью функции close
рекомендую почитать в интернете про трехэтапное рукопожатие TCP и сегмент FIN при завершении соединения TCP
0
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
24.01.2020, 18:46  [ТС]
Цитата Сообщение от TheAthlete Посмотреть сообщение
Обычно это делает сервер с помощью функции close
рекомендую почитать в интернете про трехэтапное рукопожатие TCP и сегмент FIN при завершении соединения TCP
Ну а как я понимаю из статьи GbaLog-, , то лучше дождаться когда отсоеденится сам клиент.
Чтото я запутался.
0
 Аватар для TheAthlete
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 575
25.01.2020, 16:35
Насколько я понимаю, завершение соединения происходит и на клиенте и на сервере
Рекомендую почитать книгу "Стивенс У.Р. UNIX. Разработка сетевых приложений, 3-е издание, Питер"
стр. 35 Простой клиент времени и даты и далее описание программы, на стр. 40 - Завершение программы
и дальше идет описание сервера времени и даты на стр. 43, на стр. 45 описание завершение соединения (скриншоты во вложении)
Миниатюры
Грамотное завершение успешного обмена   Грамотное завершение успешного обмена  
0
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
25.01.2020, 18:47  [ТС]
Цитата Сообщение от TheAthlete Посмотреть сообщение
Насколько я понимаю, завершение соединения происходит и на клиенте и на сервере
Вы точно поняли о чём я спрашиваю в даннй теме?
0
 Аватар для TheAthlete
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 575
25.01.2020, 18:53
насколько я понял, речь идет про завершение соединения tcp между клиентом и сервером
а что вы понимаете под
Цитата Сообщение от squareroot Посмотреть сообщение
завершать успешный обмен данными
0
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
25.01.2020, 18:56  [ТС]
Цитата Сообщение от TheAthlete Посмотреть сообщение
насколько я понял, речь идет про завершение соединения tcp между клиентом и сервером
а что вы понимаете под
Вы читали статью, которую тут выложил GbaLog- ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2020, 18:56
Помогаю со студенческими работами здесь

Условия успешного конекта к базе данных.
Помогите разобраться в азах теории удаленного конекта к базе данных на примере Microsoft SQL Server 2008 Exspress. Я хочу написать...

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

CreateProcess. Признак успешного запуска приложения
Добрый день В MSDN указано что CreateProcess возвращает ненулевое значение если запуск произошел удачно. На практике оказалось...

Настройка recaptcha, перехват успешного сообщения
Доброго времени суток. Столкнулся с необходимостью установки капчи от гугла на сайт. Не могу никак привязать капчу к кнопке отправки...

Получить ответ от успешного завершения транзакции
Используя Begin ***code** commit В дальнейшем хочу получить ответ, завершилась операция удачно или нет, операясь на не создам...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru