|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.06.2017, 11:36 | #1 |
Регистрация: 29.01.2016
Сообщений: 7
|
C# сетевое программирование
Доброго времени суток! требуется помощь. По постановке задачи мне необходимо организовать real-time обмен данными (около 25-30 строк с параметрами), с частотой в 20 мс или меньше. Код программы на C#. Имеется 2 компьютера, 1 с которого эти параметры циклически считываются (организованно посредством элемента timer) и записываются в .ini файл в расшаренной папке другого компьютера. Другая программа на "клиенте" считывает циклически эти параметры и применяет их. Столкнулся с проблемой, при задании интервала цикла таймера, например , в <100 мс, программа сильно начинает подтормаживать, и данные применяются не с той частотой. которую задаю в таймере. При интервале применения 100мс +, все работает хорошо, никаких ошибок не выявляется. Каким образом можно оптимизировать программу, и верен ли вообще такой подход?
|
22.06.2017, 12:30 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
1. Осознать и хорошо поразмыслить на тем, что винда не реалтайм система
2. Отказаться от сетевых папок и т.д. К ним доступ гарантировано может быть более 100 мс 3. Осознать, что есть минимальный квант для процесса/таймера и т.д. Он различается для серверных и десктопных версии винды. 4. Рассмотреть более точные таймеры, например, Waitable Timer |
22.06.2017, 12:58 | #3 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Цитата:
Винда не даст никакой гарантии по задержкам. Файловая шара тоже ничего не гарантирует. Нужен рил-тайм - берите рил-тайм ОС и меняйте способ обмена информацией. |
|
22.06.2017, 13:42 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
категорически согласен с предыдущими замечаниями.
и ещё хотелось бы добавить, что сетевой обмен тоже не наносекунды занимает. поэтому, либо, если такие высокие требования к быстродействию оправданы, задачу нужно уводить на принципиально иной технический уровень (грубо говоря - делать железку), либо снижать требования к быстродействию. вот, это тоже решение. |
02.07.2017, 13:34 | #5 |
Регистрация: 29.01.2016
Сообщений: 7
|
Спасибо всем за дельные советы. В таком случае, не подскажите куда копать? уточню: речь идет об уже готовой программе, а точнее симуляторе, есть SDK есть методы, которыми эти параметры применяются на клиентах, но встроенный многопользовательский режим (мультиплеер) сильно режет возможности программы, которые, однако, доступны в однопользовательском режиме. В итоге решили переписать мультиплеер, упоминаний каким образом точно организован обмен данными со стороны разработчиков,естественно,нет и не будет. Вот и встал вопрос, данные считывать на стороне "сервера" мы умеем, применять на клиентских PC тоже, сейчас уперлись в то, каким образом с минимальной задержкой передавать эти данные. Вся беда в том, что до сих пор сетевым программированием никто в команде не занимался, мне б узнать направление, куда копать, какие протоколы в таком случае и алгоритмы использовать... Всем заранее огромное спасибо!
|
02.07.2017, 14:00 | #6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Что-то вы темните... Вы хак или чит пишите чтоль? Если у вас есть готовый сетевой стек от разработчиков, то обычно пофиг какой режим - бери и шли, что надо по протоколу.
|
03.07.2017, 17:19 | #7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Я ничего не понял. И задержка зачем и ini-файл зачем.
Между первым компьютером и вторым откройте хоть TCP сокет и гоняйте данные. Один по мере получения данных отправляет их в сокет, второй постоянно читает то, что пришло, без всяких искусственных задержек. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C# сетевое программирование | Effractor | C# (си шарп) | 10 | 26.08.2013 23:30 |
Сетевое программирование на Си | kilgoreq | Общие вопросы C/C++ | 0 | 16.04.2011 00:07 |
Сетевое программирование | Armatus | Обсуждение статей | 16 | 01.12.2010 09:57 |
Сетевое программирование | Тунец | Помощь студентам | 4 | 09.07.2009 00:07 |
Сетевое программирование | Winnows-32 | Помощь студентам | 1 | 01.12.2008 07:16 |