Перейти к содержанию

Рекомендуемые сообщения

Привет всем!

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

Как я представляю реализацию:
После того, как юзер открывает программу, на сервер идет сообщение, что пользователь с таким-то именем запустил программу.
Сервер заносит этого человека в какой то лист. После этого сервер каждые 3 минуты будет отправлять запросы всем юзерам из списка.
Программа как то должна среагировать на то, что сервер у нее чтото попросил, сказать в ответ "Да, я еще запущена". Если ответа нет в течении 20секунд, то сервер выносит из листа имя юзера, программа которого не ответила.
В программе администратора должен быть тоже какойто определенный лист(в нем будут отображаться пользователи онлайн), который будет обновляться через энное кол-во времени.
Админ может выбрать пользователя и отправить запрос на сервер с именем пользователя. Сервер должен принять запрос и послать выбранному пользователю команду на закрытие.

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

Ссылка на комментарий
Поделиться на другие сайты

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

Появилось пару вопросов:

1. Когда клиент пробует подключиться к недоступному серверу, то вылазит ошибка: Asynchronous socket error 10061. Как ее избежать?

2. Допустим, что сервером может служить несколько компьютеров или любой динамичный, то как быть с установкой коннекта, какой адрес для соединения выбрать?
Например если я администратор и хочу отслеживать, кто из сотрудников работает сейчас в моей программе. Свою административную программу я могу запустить дома, на работе, на даче.
В общем неизвестно откуда. Как клиенту определить куда подключаться? а если несколько программ администрирования будет открыто?

Ссылка на комментарий
Поделиться на другие сайты

Я вижу один вариант - промежуточный сервер-ретранслятор на статическом адресе. Как у Teamviewer. К нему подключается основной сервер и сообщает, на каком адресе и порту он сейчас. И к ретранслятору же подключаются клиенты, которым сообщается, где сейчас сервер основной. Ну или вообще весь трафик перенаправлять через ретранслятор (у Teamviewer именно так), тогда даже неважно будет, за NATом сервер, или нет.

Ссылка на комментарий
Поделиться на другие сайты

Именно так и думал, но посчитал это неправильным, спасибо)


А разумно ли будет на промежуточном сервере хранить данные о состоянии основного сервера, доступен ли он?

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

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