0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 6
|
|||||||||||
Передача данных от клиента к серверу19.11.2016, 20:04. Показов 1911. Ответов 7
Метки нет Все метки)
(
Всем привет!
Возникла потребность передавать данные по симметрично-шифрованному соединению. Клиент передает данные(в данном случае число double), сервер принимает. Можно и наоборот - суть не меняется. Проблема в том, что после первой передачи ничего не принимается, после второй - прием первой, после третьей - вторая и т.д. Получить данные без задержки можно, если сразу после передачи закрыть стрим, но это рвет соединение, а на этом этапе не хотелось бы. Вот сервер
0
|
19.11.2016, 20:04 | |
Ответы с готовыми решениями:
7
Передача архива от клиента к серверу
Ошибка при сериализации от клиента серверу |
![]() ![]() |
|
19.11.2016, 20:33 | |
mishgan2, поскольку тема в разделе WCF, то я бы посоветовал вам использовать именно это, поскольку это упростит вашу задачу в разы.
0
|
11 / 11 / 4
Регистрация: 03.07.2014
Сообщений: 28
|
|
20.11.2016, 14:58 | |
mishgan2, для сетевого взаимодействия на сокетах управляемых вручную, это нормальное явление отправлять данные в момент когда они сами решили (например при заполнении своего внутреннего буфера). Кроме этого они ещё способны разбивать ваши данные на более мелкие части. Одним из решений является добавление в ваш пакет данных заголовка и окончания пакета.
0
|
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 6
|
||||||
20.11.2016, 15:56 [ТС] | ||||||
ivankon, Правильно ли я понимаю, что данные окончания пакета создаются закомментированной строчкой в примере моего клиента - CryptStreamWriter.FlushFinalBlock();? Но это же для CryptStreamWriter одноразовая операция.
Как после закрытия пакета наиболее корректно возобновить передачу? Я пробовал обновлять CryptStreamWriter через new, но не получается, CryptStreamReader на обратной стороне начинает расшифровывать неверно, хотя ключи не менялись. Добавлено через 5 минут Может не очень понятно написал, вот цикл клиента, который передает данные серверу:
На первой итерации в строке 9 создаем CryptStreamWriter впервые. Отправляем, и затем флушим финальный блок (стрка 11). Отлично, все ушло сразу, как я и хотел. На принимающей стороне корректно расшифровалось. Но CryptStreamWriter теперь уже не рабочий. Поэтому на второй итерации мы снова его пересоздаем в строке 9. Отправляем, флушим - все ушло! Но со второго раза принимающий ридер начинает расшифровывать не корректно.
0
|
11 / 11 / 4
Регистрация: 03.07.2014
Сообщений: 28
|
|||
20.11.2016, 17:00 | |||
Добавлено через 6 минут И ещё... не отказывайтесь от совета про WCF. Дело в том что, начав его изучать только вчера, вы уже решили бы эту задачу и могли бы двигаться дальше в ваших задумках.
1
|
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 6
|
|
20.11.2016, 17:39 [ТС] | |
ivankon, спасибо, пересоздавать ридер помогло. Скажите, правильно ли я понимаю, что WCF значительно более ресурсоемкая затея, нежели то, что в моих примерах. Мне просто нужно что-то максимально шустрое и легковесное, но с защитой от перехвата трафика. Задача-мониторить процессы, происходящие на сервере, отнимая как можно меньше ресурсов. WCF, как мне кажется, будет несколько тяжеловат.. Или я в корне неправ?
0
|
11 / 11 / 4
Регистрация: 03.07.2014
Сообщений: 28
|
|
20.11.2016, 18:03 | |
По поводу производительности WCF против аналогичного кода ничего не могу сказать, т.к. написать аналогичный по функционалу код весьма не просто. Но есть несколько моментов которые возможно помогут вам с выбором:
1. библиотеки WCF (System.ServiceModel) после установки net, хранятся в GAC (Глобальный Кэш Сборок), в скомпилированном в машинный код виде (это по словам МС увеличивает скорость первого запуска на 60%)(Пусть меня поправят более опытные программисты, если я не прав) 2. с помощью WCF очень легко создать асинхронный сервер, в вашем случае я так понял будет синхронный сервер, что отнимет у ОС лишние потоки (а это весьма ценный ресурс для сервера), т.к. пул потоков приложения создаст дополнительный поток взамен ожидающего в блокировке 3. на WCF легко можно организовать передачу по нескольким каналам больших объёмов данных, для того чтобы занять всю полосу пропускания, на сокетах это сделать весьма утомительно (я делал, получилось не очень...)
1
|
20.11.2016, 18:03 | |
Помогаю со студенческими работами здесь
8
Реализация клиента для подключения к серверу на WebSocket Необработанное исключение при подключении клиента к серверу Socket Server/Client. Падение клиента при коннекте к серверу Как отловить подсоединение нового клиента к серверу на базе UDP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
|
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать?
Entity Framework — это. . .
|
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
|
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
|
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Опубликовано: 07. 07. 2025
Рубрика: Uncategorized
Автор: AlexA
Статья размещается на сайте с разрешения. . .
|
Раскрываем внутренние механики Android с помощью контекста и манифеста
mobDevWorks 07.07.2025
Каждый Android-разработчик сталкивается с Context и манифестом буквально в первый день работы. Но много ли мы задумываемся о том, что скрывается за этими обыденными элементами? Я, честно говоря,. . .
|
API на базе FastAPI с Python за пару минут
AI_Generated 07.07.2025
FastAPI - это относительно молодой фреймворк для создания веб-API, который за короткое время заработал бешеную популярность в Python-сообществе. И не зря. Я помню, как впервые запустил приложение на. . .
|
Основы WebGL. Раскрашивание вершин с помощью VBO
8Observer8 05.07.2025
На русском
https:/ / vkvideo. ru/ video-231374465_456239020
На английском
https:/ / www. youtube. com/ watch?v=oskqtCrWns0
Исходники примера:
|
Мониторинг микросервисов с OpenTelemetry в Kubernetes
Mr. Docker 04.07.2025
Проблема наблюдаемости (observability) в Kubernetes - это не просто вопрос сбора логов или метрик. Это целый комплекс вызовов, которые возникают из-за самой природы контейнеризации и оркестрации. К. . .
|
Проблемы с Kotlin и Wasm при создании игры
GameUnited 03.07.2025
В современном мире разработки игр выбор технологии - это зачастую балансирование между удобством разработки, переносимостью и производительностью. Когда я решил создать свою первую веб-игру, мой. . .
|