|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
||||||
Socket.BeginConnect и чтение/запись данных - проверка кода13.09.2012, 13:42. Показов 9624. Ответов 71
Метки нет (Все метки)
Данные поступают я их вывожу в контролы.Также хотелось бы реализовать запись данных в файл и одновременное чтение в другом месте.как мне это реализовать без "Задержки данных" ибо мы используем асинхронный коннект. Также хотелось бы спросить у ГУРУ у меня "правильная логика" полученния данных вывод и всего остального? Добавлено через 40 минут И ещё если убрать комментарии возле Chart'a то видно не вооруженным глазом что данные "запаздывают" в Textbox'e я вижу только один путь исправления. "оптимизировать" Chart т.е. выводить только текущие значения(пакеты который только что пришли и прошлый пакет вырисовывать, а не все что бы график не выравнивался и не "скручивался"), но даже он не даст "точных" текущих значений на клиете(они не будут совпадать на сервере) как вывесте текущее значения в Chart??или как вылечить болезнь с "запаздыванием" данных если она вообще решается на моё примере(т.к. используем асинхронный коннект)
0
|
||||||
| 13.09.2012, 13:42 | |
|
Ответы с готовыми решениями:
71
как передать начальные данные в Socket.BeginConnect Реализовать чтение данных ИБП Ippon через serial socket Чтение файла, чтение названия папки где находится файл, запись данных на PHP |
|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
|
| 13.09.2012, 15:56 [ТС] | |
|
Глупый вопрос.как мне сделать отправку данных когда ещё идёт приём..т.е. будет происходить постоянно получение данных и одновременно я могу посылать данные на сервер..я сделал в лоб на кнопку повесил bool flag = !flag; а в клиенте if(flag) SendData(...);?
0
|
|
| 13.09.2012, 16:04 | |
|
И правда глупый, ты не сможешь что-то оправить в сокет, пока ожидаешь приема или принимаешь данные, выпадет ошибка. По крайне мере я не знаю таких способов. НО можно попробовать использовать неблокирующие сокеты. И посылать очередь из команд. Но опять таки, смотря что ты подразумеваешь под приемом - ожидание приема, или процесс получения данных?
0
|
|
|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
||||||
| 13.09.2012, 16:13 [ТС] | ||||||
|
Стало запутанно..Не понял до конца смысл класса событий и класса клиента ..если это сводится к асинхронному коннекту..почему бы не воспользоваться простым BeginConnect с Invok'ом только проблема встанет с Chart'ами а их как минимум 2..
я побывал методом в лоб как я и говорил bool flag повесил на кнопку..а в
И главное что я отправляю данные..но я как то глупо это делаю чз условие и чз флаг "ТОПОРным" методом.а как сделать правильнее?
0
|
||||||
| 13.09.2012, 16:30 | ||||||
|
Как ты пошлет данные , если ты в данный момент их принимаешь? Я просто не знаю о такой фичи в сокетах) В общем пример не правильный, работать не будет.
вот тебе пример отчасти правильного асинхронного клиента: Асинхронный клиент
А правльней будет вызывать методы Receive и Send с формы. И не нежны никакие флаги. Но я повторюсь ещё раз, я не знаю можно ли посылать данные по сокету по он их принмиает, я склоняюсь к тому что нельзя.
1
|
||||||
|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
|
| 13.09.2012, 16:35 [ТС] | |
|
да вот именно что всё работает глупым методом в лоб всё работает данные отсылаются и сервер их принимает..мне кажется потому что асинхронный коннект другой магии тут нету))..
Добавлено через 1 минуту да кстати по поводу примера я его прочитал и начал делать свой клиент..т.к тот из за разрыва соединения не работало ничего=(
0
|
|
| 13.09.2012, 16:36 | |
|
Ну если работает глупым методом, то бери мой пример и добавляй туда захардкоренную на бесконечный цикл прием данных. А на форму выведи кнопку для отправки данных. и все, в итоге ты постоянно получаешь данные от сервера и при нажатии на кнопку их отправляешь.
0
|
|
|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
|
| 13.09.2012, 16:37 [ТС] | |
|
Да и ещё если делать Chart1.Invoke(new Action(() => {Chart1.Series[0].......}));
Данные идут с "задержкой"
0
|
|
| 13.09.2012, 16:37 | |
|
videoLoL, у тебя очень грубые ошики в твоей коде, одна из них - это то, что ты не делаешь завершение асинхронного коннекта, ты должен обязательно вызвать EndConncet в CallBack'е, уначе у тебя не завершится работа.
0
|
|
|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
||||||
| 13.09.2012, 16:39 [ТС] | ||||||
|
Вопрос уже стоит не как организован клиент..я знаю что он у меня убогий=(..но как мне в Chart1 выводить график без задержки вывода данных в TextBox???
Добавлено через 26 секунд я делаю
0
|
||||||
| 13.09.2012, 16:42 | ||
|
На счет задержи, не знаю, тести прогу, меняй способы. С задержаками никогда не сталкивался, всегда все утраивало. Может народ с форму че и подскажет)
Добавлено через 1 минуту Добавлено через 1 минуту Как из вариантов, перепиши клиента, быть может из за его "убогости" происходят задержки, тут спорный вопрос.
0
|
||
|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
|
| 13.09.2012, 16:48 [ТС] | |
|
да вот именно из за этого асинхронного коннекта если я данные вывожу в 1 TextBox чз Invoke то всё хорошо видно как микросекунды летят.(0-999) а когда подключаю Chart1 чз Invoke то тут начинается беда в TextBox'e видно как пролистываются микросекунды даже видно как пролистываются доли микросекунд а это значит что данные выводится с задержкой в связи с тем что Chart1 Отрисовывает график..а если его не отчищать то график будет сворачиватся и выравниватся и тогда аще коллапс..данные в Textbox'е с ума сходят=( то данные другие то все 0 то другие и т.д. как тут поступить?
Добавлено через 1 минуту асинрохнный поток на вывод?или что Thread?ThreadPool (кстати я так и не пользовался им что это? можете объяснить пожалуйста?) или ещё что нибудь..или у меня концепция в корень не верная..если эта не верная то даже не знаю как уже программу переделать=( Добавлено через 3 минуты Предлагаю вернутся к "баранам" и всё с чистого листа..как вы видите сделать этот проект?.. Синхронный коннект не позволит менять значения на форме т.к. работает в 1 поток. в Асинхронном при подключение Chart чз Invoke и TextBox чз Invoke (кстати данные одни и теже) то данные на текст боксе выводятся с задержкой как и в Chart(в связи с тем что Chart отрисовывает данные) какой выход?
0
|
|
| 13.09.2012, 16:49 | ||
|
videoLoL, так отрисовка графики завист от мощности твоего компа))) тем более если ты рисуешь в микросекундах. Тут уже сама прога лагать начинает, как вариант увеличить интервал перерисовки, дабы снизить нагрузку.
1
|
||
|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
|
| 13.09.2012, 16:51 [ТС] | |
|
нет это был мой вопрос что мне сделать с этим Chart'ом сделать поток на вывод?а асинхронный это я печатал задумался.... вообщем не берите в голову
0
|
|
| 13.09.2012, 16:52 | ||
|
Начал естественно с синхронного способами, у меня что получалось что-то нет. Потом забил переписал все на асинхронный,там вроде пошло, на нем и остановился. Писал дня 4, в итоге получились одинаковые серваки, с разницей только в синхронности. В вашей ситуации. ПЕРВОЕ, видимо вам очень не хочется это делать, почитать мат часть по асинхронным сокетам и переписать все как должно быть, и только после этого смотреть почему зависает, как зависает и искать эти ошибки.
1
|
||
|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
|
| 13.09.2012, 16:52 [ТС] | |
|
эм интонацию не передать текстом..смысл понял попробую завтра благодарю за помощь и разъяснения ...если что тема ещё не закрыта)..завтра отпишусь)
0
|
|
|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
|
| 13.09.2012, 16:54 [ТС] | |
|
Первое вы имели ввиду - Асинхронный сокет на клиенте?
0
|
|
|
7 / 7 / 2
Регистрация: 20.04.2011
Сообщений: 163
|
|
| 14.09.2012, 06:23 [ТС] | |
|
Не понимаю как сделать одновременную отправку сообщений когда ещё идёт приём данных..
что вешать на кнопку?я делаю топорным методом вешаю на событие bool flag = !flag;как бы вы это сделали?
0
|
|
| 14.09.2012, 09:37 | |
|
videoLoL, однако тяжело судить, можно или нельзя сделать так то так то, без исходников сервера. Код должен быть следующий:
Для приема делаешь бесконечный цикл на прием: while(stopper) Receive(); Для отправки в событии button_click пишешь: Send("msg");
0
|
|
| 14.09.2012, 09:37 | |
|
Чтение/запись hex кода файла Проверка прав доступа (чтение/запись) в директории Open/Save Dialog. Сериализация данных. Запись/чтение данных объектов в/из потока.
Чтение и запись данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|