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

Как проверять статус клиента, подключен или нет

05.07.2023, 08:09. Показов 8051. Ответов 3

Студворк — интернет-сервис помощи студентам
Делаю чат с TCP/UDP соединением. Сейчас нужно сделать так, чтобы сервер показывал клиентам список подключенных клиентов. Т.е клиент подключился, этот список отправился на другие доступные клиенты, но так же если клиент отключился, у остальных клиентов этот адрес тоже удаляется. Код не нужен, только бы алгоритм знать и какие функции использовать.

Была мысль постоянно обмениваться сообщениями, невидимыми для пользователя, мол если сообщение пришло в течение 2 секунд - значит онлайн, нет - клиент отключен. Но проблема в том, что этот список тогда будет постоянно приходить на другие клиенты, будет мигать на экране и мозолить глаза. Что-то мне подсказывает что для этого явно специальные механизмы уже были придуманы. Помогите, кто чем может
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2023, 08:09
Ответы с готовыми решениями:

DropboxAPI. Получить статус подключен/не подключен
Для работы с Dropbox использую DropboxAPI: DropboxAPI<AndroidAuthSession> dropbox; //подключиться к Dropbox AndroidAuthSession...

Как программно проверить, принтер подключен или нет?
Здравствуйте! Я работаю на Д2009. В своей программе хочу проверить, есть ли соединение клиентского компьютера с сервером. Написал такой...

Как проверять кнопку на интерактивность (интерактивная она или нет)
Здравствуйте, скажите пожалуйста как можно проверить кнопку на интерактивность из скрипта. (сам скрипт к кнопке не привязан) Заранее...

3
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
05.07.2023, 09:02
Если у вас UDP, то там нет никакого состояния подключения, поэтому клиент не может отключиться, клиент может перестать отправлять данные.
Если у вас TCP, то смотрите когда read вернёт 0 байт или на ошибку сокета.
0
Модератор
 Аватар для vxg
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
06.07.2023, 06:06
Замабувараев, ноль или ошибка могут вернуться с оттяжкой по времени
Qouk, слать служебные сообщения "я здесь" нормально, если они служебные почему они должны как-то мигать на экране, про списки не очень понял
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
06.07.2023, 18:19
Цитата Сообщение от Qouk Посмотреть сообщение
Была мысль постоянно обмениваться сообщениями, невидимыми для пользователя, мол если сообщение пришло в течение 2 секунд - значит онлайн, нет - клиент отключен
Это называется heartbeat. Выбираете оптимальное время N секунд, а на сервере периодически смотрите не пришло ли время почистить ресурсы коннекшенов которые отвалились (не прислали проверочное сообщение в течении N секунд). Те кто отвалились, выходят из списка получателей. Еще клиент явно может закрыть соединение, тогда recv должен вернуть 0.

Цитата Сообщение от Qouk Посмотреть сообщение
Но проблема в том, что этот список тогда будет постоянно приходить на другие клиенты
А в чем проблема? Пусть приходит. Клиенты же должны иметь на руках список тех, кто онлайн. Значит отправлять клиентам эту информацию нужно. Другое дело если не хотите отправлять весь список, можете отправлять только те данные, которые актуальны для каждого клиента.

Цитата Сообщение от Qouk Посмотреть сообщение
будет мигать на экране и мозолить глаза
Если имеется ввиду обновление списка, то это норм. Должны же произойти определенные изменения на стороне клиента что бы он мог видеть обновленный список пользователей которые онлайн.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2023, 18:19
Помогаю со студенческими работами здесь

Как правильно проверять, среплицировался ли документ на сервер или нет
Гм... интересная задачка... Есть две реплики на двух серверах - А и Б. На А изменяют документ. Нужно произвести какое-то действие, когда...

Как программно узнать подключен комп в данный момент и инету или нет
Как программно узнать подключен комп в данный момент и инету или нет? Помогите HELP HELP :friends: Чтоб например нажал на кнопку, и...

Как узнать, как подключен компьютер в сеть, через switch который подключен к коммутаторы или напрямую с коммутатором ?
У нас много роутеров и switch-ей, роутеры настроены как switch. И использую программу Netxms для мониторинга сети, но он не находит switch.

Узнать, подключен ли сокет или нет
Как узнать, подключен ли сокет или нет? На это строке: Dim tcpClient As New System.Net.Sockets.TcpClient() Я получаю...

Как определить IP адрес клиента и его статус?
g++ сокет беркли подключение tcp собственно задача логировать все подключения но как узнать IP адрес подключенного клиента? ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru