|
37 / 37 / 6
Регистрация: 06.01.2013
Сообщений: 195
|
||||||
Ассоциативный массив или его аналоги?06.01.2013, 12:34. Показов 2506. Ответов 8
Метки нет (Все метки)
Приветствую!
Недавно связался с языком c#, поэтому не судите строго если чего не знаю. В общем суть такая, пишу приложение типа TeamViewer, только намного проще, возникла проблема в передачи данных от сервера к клиенту и обратно, но чтобы информацию передавать её сперва нужно преобразовать в понятный формат, чтобы небыло проблем с разбором. в общем я решил сделать что то на подобии ассоциативного массива, то есть : Метка => "Значение", затем преобразую всё это в строку а потом в массив байт, но возникла проблема как на староне клиента из строки получить обратно такой же формат данных?
0
|
||||||
| 06.01.2013, 12:34 | |
|
Ответы с готовыми решениями:
8
Ассоциативный массив Ассоциативный массив Существуют ли аналоги webBrowser, например, на движке Мозиллы или Оперы |
|
|
|||||||||||
| 06.01.2013, 14:11 | |||||||||||
|
Все гораздо проще, чем вы думаете.
Алгоритм кодирования словаря таков: 1. Записываем число элементов словаря - N. 2. В цикле по элементам словаря записываем 2N строки. Четные строки (0, 2 и т.д.) - это ключи, нечетные - значения. Строка записывается аналогично: сперва длина строки, затем сама строка. Считывание происходит в том же порядке, что и запись. Вам понадобится метод преобразования строки в набор байт и наоборот, это методы GetBytes и GetString соответственно класса Encoding, например:
А вообще, гораздо эффективнее передавать не строки, а уже готовые значения. В спойлере класс для записи пакетов сервера Ultima Online, возможно, посмотрев его, станет немного понятней, как можно работать с сетью. Кликните здесь для просмотра всего текста
0
|
|||||||||||
|
37 / 37 / 6
Регистрация: 06.01.2013
Сообщений: 195
|
||||||
| 06.01.2013, 16:01 [ТС] | ||||||
|
Получается обессмыслено использовать Dictonary, так как придется наворотить велосипед с преобразованием словаря в строку, а потом из строки в словарь=) А как на счёт Hashtable?
Кликните здесь для просмотра всего текста
ЗЫ: Почитал код приложенный, и понял что я далек от понимая =), что то понятно, что то нет, но согласно коду сообщение передается как обычно по битно, то есть строка передаваемая кодируется в биты путём кодировки каждого символа а потом отправляется, в потоке через сокет? Не увидил реализации как передавать готовые значения?
0
|
||||||
|
37 / 37 / 6
Регистрация: 06.01.2013
Сообщений: 195
|
||||||
| 06.01.2013, 17:22 [ТС] | ||||||
|
потоку скармливаю массив байт и всё=)
Кликните здесь для просмотра всего текста
0
|
||||||
|
|
||||||||||||||||
| 06.01.2013, 17:33 | ||||||||||||||||
|
У вас также используется сокет, также передаются массивы байт, так что можете воспользоваться прилагаемым мной файлом примера. Там идет запись в поток в памяти, например:
0
|
||||||||||||||||
|
37 / 37 / 6
Регистрация: 06.01.2013
Сообщений: 195
|
|
| 06.01.2013, 17:56 [ТС] | |
|
Меня видимо маленько не понял =)
Как передать массив байт я знаю =) меня интересует как сформировать строку из параметров и значений на сервере, и как потом её на клиенте разобрать. Нужен универсальное решение которое позволяло бы на стороне сервера собрать все нужные данные в строку: ID=123456 UserVPN=User1 UserPass=testPass ID=123456;UserVPN=User1;UserPass=testPas s; имел входящие данные "ID" ... "N" в результате выдавал строку ID=123456;UserVPN=User1;UserPass=testPas s; А на стороне клиента обращается к этим данным типа ID=parametr[ID];
0
|
|
|
|
||||||
| 06.01.2013, 18:04 | ||||||
|
Это не лучший подход, но можно и так. Алгоритм в моем первом посте.
Пихаем в массив байт следующие строки: ID 123456 UserVPN User1 UserPass testPass На стороне клиента получаем эти же строки и формируем словарь, запихиваем это в словарь... Добавлено через 43 секунды Я как раз в данный момент клиент-сервер, но не уверен, что успею в ближайшее время дойти до этого момента, так бы дал готовый код. Добавлено через 4 минуты Вот, кстати, класс PacketReader из того же сервера: Кликните здесь для просмотра всего текста
1
|
||||||
|
37 / 37 / 6
Регистрация: 06.01.2013
Сообщений: 195
|
|
| 06.01.2013, 19:15 [ТС] | |
|
Спасибо за еще 1 код =) +1 в карму =)
В общем нашел так сказать оптимальный вариант, пока устраивает, если нужно то юзайте =) Сам класс Ну а тут пример его использования А тут проект полностью ЗЫ: Если не секрет что за приложение пишешь?
0
|
|
| 06.01.2013, 19:15 | |
|
Помогаю со студенческими работами здесь
9
Распарсить ассоциативный массив и добавить его в БД Progressbar или его аналоги
Ассоциативный массив как его перевести в порядок Бесплатный reflector или его аналоги Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|