|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.05.2016, 21:23 | #1 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Сокеты в Windows Forms
Недавно я поднимал топик http://programmersforum.ru/showthread.php?t=288760 и несколько подобных, но ответа так и не получил. Получил, типо оптимизируй TCP, правильно таймауты и паузы расставляй... До сих пор я не понял, что делать, поэтому решил повернуть вопрос по-другому. Я объясню, как у меня сделаны сокеты, а в ответ хотел бы услышать, как изменить этот код, где есть 3 разных программы, запускаемые теоретически с 3 разных компьютеров, чтобы одна программа дожидалась до конца данные от другой программы, а третья программа дожидалась данных от 2 программы, и только после этого происходил новый цикл. Сейчас у меня проблема, что три программы работают в бесконечном цикле обработки данных, но исходные данные во второй программе - это переденный из 1 программы результат обработки данных в первой программе.
Если проще, я моделирую радиопередатчик, канал связи и приемник - 3 черных ящика, обмен данных между которыми обеспечивают Сокеты. |
25.05.2016, 21:30 | #2 |
Форумчанин
Регистрация: 12.02.2010
Сообщений: 787
|
Итак, начнем. Что происходит в 1 программе. Нужно просто передать данные во вторую программу, а затем дальше обработать новые данные и снова их передать... Код:
Код:
Получается, если во второй программе данные еще не закончили обрабатываться, а из первой программы поступают уже новые данные, получится коллапс, как это учесть? Последний раз редактировалось Krasi; 25.05.2016 в 21:39. |
25.05.2016, 21:42 | #3 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Как же вы путано объясняете.
TCP это потоковая передача! Не пакетная и не байтовая. Что это значит? А то что реально данные накапливаются в буферах потом порция отправляется. По дороге данные могут разбиться на пакеты, а могут и склеиться. Вам никто не гарантирует не время задержки в буфере, не размер реальной порции которая уйдет с вашего компьютера. Так вот ваша программа должен быть готов, что к ней за раз придёт не 1000 элементов double, а к примеру 1001 байт (250.25 шт Double ). На приемной стороне вы должны организовать буфер. Буфер по русски задержка. Он задерживает данные прежде чем отдать дальше. Так вот в буфере вы накапливаете свои данные ждёте пока не придёт более чем 1000 элементов double. И только тогда уже отдаёте из этого буфера 1000 double на обработку и отображение.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 25.05.2016 в 21:48. |
25.05.2016, 22:35 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
вы отделите прием от обработки, если уж так.
и переместил вашу тему, это не С++. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++ и windows forms | mad_ded | Windows Forms | 3 | 05.02.2015 17:01 |
Windows Forms С++ | Aleks1994 | Помощь студентам | 2 | 04.04.2013 18:40 |
Сокеты windows | Slafka | C/C++ Сетевое программирование | 2 | 22.06.2011 00:16 |
Сокеты Windows | Slafka | Visual C++ | 0 | 06.06.2011 15:00 |
Windows Forms | masashama | Windows Forms | 12 | 14.02.2011 16:14 |