Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
.NET 4.x

Определённое количество запуска приложений

25.09.2017, 15:37. Показов 2196. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день товарищи господа.
Болею такой делемой.
Есть программа, могу запустить over 1 000 000 копий.
у меня 10 компов, нужно сделать так, чтобы мог запустить только 5 программ в своей сети.
ip 192.168.0.2
маска 255.255.255.0
шлюз 192.168.0.1
так сказать демо версию программы дать попробовать.

какие идеи?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2017, 15:37
Ответы с готовыми решениями:

Служба запуска приложения в определенное время
Здравствуйте. Возникла задача: сделать резидентную программу, которая должна висеть все время в памяти, и в определенное время (желательно,...

Развертывания Windows приложений – редактирование условия запуска на наличие установленного .NET
Здравствуйте, это мой второй вопрос из трех. Когда собираешь установочный проект, то можно указать, что включить в сборку, например...

Развертывания Windows приложений - без проверки условия запуска на наличие установленного .NET
Здравствуйте, это мой первый вопрос из трех, подскажите, существует ли какой ни будь способ отключить обязательное проверку условия о...

25
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
25.09.2017, 15:42
Цитата Сообщение от anomal6 Посмотреть сообщение
какие идеи?
делай 1 приложение - сервер которому при запуске программы будут отсылать данные и спрашивать разрешение на запуск
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
25.09.2017, 15:45
Цитата Сообщение от EVG-1980 Посмотреть сообщение
1 приложение - сервер
И всю логику работы вынести на сервер, дабы потенциальному взломщику жизнь медом не казалась.
0
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
25.09.2017, 15:48  [ТС]
Цитата Сообщение от EVG-1980 Посмотреть сообщение
делай 1 приложение - сервер которому при запуске программы будут отсылать данные и спрашивать разрешение на запуск
Ну допустим, а что хранить на сервере? в поток я вливаю что?
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
25.09.2017, 15:53
Цитата Сообщение от anomal6 Посмотреть сообщение
Ну допустим, а что хранить на сервере? в поток я вливаю что?
что душе угодно например количество запущенных программ в сети
0
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
25.09.2017, 16:15  [ТС]
Цитата Сообщение от EVG-1980 Посмотреть сообщение
что душе угодно например количество запущенных программ в сети
А как отловить количество запущенных программ в сети? если я дал программу Васе, а у него то другие настройки.
И если у него нет интернета?
0
34 / 36 / 17
Регистрация: 16.04.2017
Сообщений: 478
Записей в блоге: 4
25.09.2017, 16:30
С настройками-не понял.
Без инета никак.
Как ты сделаешь счётчик без сети?
При запуске происходит соединение-верификация-вердикт.
0
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
25.09.2017, 16:37  [ТС]
Цитата Сообщение от saqef Посмотреть сообщение
С настройками-не понял.
Без инета никак.
Как ты сделаешь счётчик без сети?
При запуске происходит соединение-верификация-вердикт.
ну смотри, у меня есть выход в интернет, и я могу отловить сколько запущено, это no problem.
А вот без доступа в интернет, как я это вижу.
Программа по локальной сети ищет сама себя.
Запустил программу, она открыла порт на время запуска, она по локальной сети ищет сама себя( по порту. Сканирует ip и смотрит определённый порт). В локальной сети порты на маршрутизаторе открывать не надо. Они доступны.
начиная со своего ip адреса.
Например 192,168,0,1-*,*,*,255
Запустил вторую программу, она снова ищет в локальной сети сама себя. Нашла, сравнила значение с переменной
В переменной значение 5
и так до 5.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
25.09.2017, 17:04
Лучший ответ Сообщение было отмечено anomal6 как решение

Решение

Задумка для работы по локалке правильная, небольшая корректировка:
1. В приложении хранится переменная с количеством запущенных программ в сети.
При запуске она равна единице - для текущего экземпляра.
2. Далее метод, например UpdateValue - делает широковещательный запрос в сети.
У всех экземпляров приложения в отдельном потоке будут также Listener-ы, которые принимают этот широковещательный адрес и отправляют ответ.
3. С каждым полученным ответом исходный экзмепляр приложения инкрементирует счетчик.
Цитата Сообщение от anomal6 Посмотреть сообщение
Программа по локальной сети ищет сама себя.
Она не себя ищет, она просто отправляет широковещательный запрос, который отправляется на все адреса в локальной сети. То есть приложение будет и клиентом, и сервером, что-то типа peer-to-peer.
Ищите в сети информацию по запросам:
C# broadcast requests + namespace-ы System.NET, System.Net.Sockets
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
25.09.2017, 17:15
Цитата Сообщение от IamRain Посмотреть сообщение
1. В приложении хранится переменная с количеством запущенных программ в сети.
При запуске она равна единице - для текущего экземпляра.
2. Далее метод, например UpdateValue - делает широковещательный запрос в сети.
У всех экземпляров приложения в отдельном потоке будут также Listener-ы, которые принимают этот широковещательный адрес и отправляют ответ.
3. С каждым полученным ответом исходный экзмепляр приложения инкрементирует счетчик.
задумка Г , не купил бы я программу которая шарит по моей сети и забивает каналы бесполезным трафиком...

firewall никто не отменял и бредмауер оконников тоже
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
25.09.2017, 17:23
Цитата Сообщение от EVG-1980 Посмотреть сообщение
которая шарит по моей сети
Ну широковещательный запрос/адрес ведь не просто так придумали, не правда ли? Значит есть use case-ы, когда его использование оправдывает себя.
afaik, фича автообнаружения в WCF, скорее всего, точно также работает, а как по-другому?
0
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
25.09.2017, 19:03  [ТС]
Цитата Сообщение от EVG-1980 Посмотреть сообщение
задумка Г , не купил бы я программу которая шарит по моей сети и забивает каналы бесполезным трафиком...
Отвергаешь предлагай.
я как смог придумать, увы.
Как вот проги продают с лицензией например на 20 компьютеров?
Есть которые к серверу подключаются локальному. А есть и другие.
Предложи версию лучше. Я уверен способ есть

Цитата Сообщение от EVG-1980 Посмотреть сообщение
firewall никто не отменял и бредмауер оконников тоже
Согласен способ ненадёжный, но "ЗАКОСТЫЛИТЬ" можно, например в поток поставить проверку на отключения или удаления правила из фаервола
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.09.2017, 19:28
Цитата Сообщение от anomal6 Посмотреть сообщение
Как вот проги продают с лицензией например на 20 компьютеров?
Для этого устанавливается лиценз-менеджер, чтобы он контролировал
0
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
25.09.2017, 19:33  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
Для этого устанавливается лиценз-менеджер, чтобы он контролировал
А что это? Можно по-подробнее об этом?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.09.2017, 19:39
лиценз-менеджер - это такая штука, которая распоряжается лицензиями. Грубо говоря в локальной сети стоит "сервер" лицензий, который раздает их приложениям. Закончились лицензии (все раздали) - вылетает окошко, что свободных лицензий нет.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
25.09.2017, 19:51
Лучший ответ Сообщение было отмечено anomal6 как решение

Решение

В принципе, задача вполне реальная.
Используем WCF API автообнаружения. При запуске экземпляра программы сначала ищем по широковещательному каналу наличие уже запущенных хостов на транспорте UDP и с определенным именем контракта. Если количество найденных и работающих хостов меньше 5 (к примеру) - стартуем свой хост и далее уже работа программы. Поскольку поиск по UDP занимает время, можно при запуске отобразить SpalshScreen, ну а далее в зависимости от результата.
1
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
25.09.2017, 20:34  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
лиценз-менеджер - это такая штука, которая распоряжается лицензиями. Грубо говоря в локальной сети стоит "сервер" лицензий, который раздает их приложениям. Закончились лицензии (все раздали) - вылетает окошко, что свободных лицензий нет.
Понял, штука конечно хорошая, но вот для моей задачи не подходит
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
25.09.2017, 20:38
Лучший ответ Сообщение было отмечено anomal6 как решение

Решение

anomal6, вот тестовый код для консоли. В данном варианте сначала стартует служба, потом происходит поиск, но это можно поменять местами. Используйте этот шаблон для реализации вашей задачи. В тестовом приложении просто выводится количество запущенных программ в сети.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.ServiceModel;
using System.ServiceModel.Discovery;
 
namespace ProgramCounter {
    class Program {
        static void Main(string[] args) {
            
            ServiceHost host = new ServiceHost(typeof(Test));
            host.Description.Behaviors.Add(new ServiceDiscoveryBehavior());
            host.AddServiceEndpoint(new UdpDiscoveryEndpoint());
            string address = string.Format("http://{0}:{1}/Test", Environment.MachineName, GetFreePort());
            host.AddServiceEndpoint(typeof(ITest), new BasicHttpBinding(), address);
            host.Open();
 
            UdpDiscoveryEndpoint endPoint = new UdpDiscoveryEndpoint();
            DiscoveryClient client = new DiscoveryClient(endPoint);
            FindResponse response = client.Find(new FindCriteria(typeof(ITest)));
 
            Console.WriteLine("Count of same programs in network: {0}", response.Endpoints.Count);
            Console.ReadLine();
        }
        static int GetFreePort() {
            IPEndPoint point = new IPEndPoint(IPAddress.Any, 0);
            using (Socket socket = new Socket(AddressFamily.InterNetwork, 
                SocketType.Stream, ProtocolType.Tcp)) {
                    socket.Bind(point);
                    IPEndPoint localPoint = (IPEndPoint)socket.LocalEndPoint;
                    return localPoint.Port;
            }
        }
    }
    public class Test : ITest {
        public void Run() {
            //throw new NotImplementedException();
        }
    }
    [ServiceContract]
    public interface ITest {
        [OperationContract]
        void Run();
    }
}
1
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
25.09.2017, 21:43  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
anomal6, вот тестовый код для консоли
Обалдеть, спасибо. Даже исходник накидал

Добавлено через 12 минут
Только вот
C#
1
"Протоколу HTTP не удалось зарегистрировать URL-адрес http://+:51337/Test/. Текущий процесс не имеет прав доступа к этому пространству имен
Понял понял. Invoke
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
25.09.2017, 21:50
Цитата Сообщение от anomal6 Посмотреть сообщение
Только вот
Запустить от имени Администратора. Это почти обязательное требование при работе с WCF.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2017, 21:50
Помогаю со студенческими работами здесь

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

Отслеживание запуска других приложений
Не мог бы кто подсказать, чем именно (методом, свойством) реализуется отслеживание запуска виндовых приложений? Скажем, для того, чтобы...

Как создать фоновую задачу для автоматического запуска в определённое время с интервалом?
Задача следующая.Раз в 2 недели мне требуется удалять из базы данных устаревшие данные.Как в Core реализовать автоматический запуск задачи...

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

Запуск bat-файла определенное количество раз и определенное количество дней
1 есть .bat файл, который запускает некий скрипт. Требуется настроить его так, что бы запуск происходил определенное количество дней. Как...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru