Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2011, 10:19   #1
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию Клиент-сервер

Есть клиент-сервер. Хочу что бы он передавал не только одно значение а буфер. То есть что бы сразу было переданно несколько edit ов. Как понимаю только через буфер возможно реализовать но встает проблема как преобразовать string в byte, пробовал менять тип буфкра не помогает. Так же сам варианты преобразования. Как все мимо. Числа передаются без проблем а вот буквы ни в какую.
Зод вне форума Ответить с цитированием
Старый 15.11.2011, 10:58   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Я вас удивлю, но стринг и есть массив байт.
p51x вне форума Ответить с цитированием
Старый 15.11.2011, 11:05   #3
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию

http://pblog.ru/?p=91
в частности это: Это и все, что нужно сделать. Обратите внимание на то, что если не отключать принятие сообщения (Socket.ReceiveText()) и попытаться одновременно принять и сообщение и буфер, то это приведет к потере данных одной из функций. Решить эти проблемы можно за счет перевода сообщения в формат буфера вот так:

Код:
For i:=1 to Length(TextEdit.Text) do
 Buf:=Copy(TextEdit.Text,i,1);
Буфер там
Код:
var
  Buf: array[0..1] of byte;
Что это за перевод и как им пользоваться? Чем обьявить i?
Зод вне форума Ответить с цитированием
Старый 16.11.2011, 08:31   #4
VAM
Пользователь
 
Аватар для VAM
 
Регистрация: 06.02.2011
Сообщений: 30
По умолчанию

http://programmersforum.ru/showthread.php?t=147209
« Amor Componentis Nos Unit »
VAM вне форума Ответить с цитированием
Старый 16.11.2011, 09:11   #5
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию

09:11
Спасибо конечно но мне скорее нужен string, просто цифры я и сам могу передать, мне нужны буквы для передачи.

09:22
понял. Спасибо.

Красные жирные циферки видны ?
Это время, когда вы отправляли свои сообщения друг за другом, подряд.
У нас есть кнопка "Правка".
Читаем правила раздела.
По правилам это приравнивается к флуду.

Последний раз редактировалось mihali4; 16.11.2011 в 23:32.
Зод вне форума Ответить с цитированием
Старый 16.11.2011, 16:07   #6
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Зод, статью, на которую вы дали ссылку, написана для общего ознакомления. Чтобы корректно передавать и строковые данные и числовые, да, в общем-то любые, нужно организовать правила пакетирования и состав пакета. В одном пакете вы можете передавать смешанные данные, нужно только задать правило сбора данных. Что идет первыми байтами, где строки где числа по порядку.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 16.11.2011, 21:52   #7
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

А кто мешает передать через Stream (StringStream, MemoryStream,)
SERG1980 вне форума Ответить с цитированием
Старый 17.11.2011, 15:50   #8
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
А кто мешает передать через Stream (StringStream, MemoryStream,)
Stream хорош для передачи файлов. Пакет все равно передается байтовым буфером, и все равно нужно собирать данные в пакет вручную. В случае с массивом байт не нужно создавать поток, не нужно следить за текущей позицией, не нужно вызывать процедуры чтения и записи в поток, освобождать тоже не нужно. У вас есть стандартный массив байт, строгого размера, заполняйте подряд по правилам вашего протокола и отсылайте. Остаток пакета, если данных меньше, пусть так и заполнен мусором. Используйте стандартный размер пакета (строгие команды не являются динамическими данными): 2, 4, 8, 16, 32, 64, 128, 256 байт.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 24.11.2011, 22:27   #9
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию

И все же какие правила пакетирования могут существовать?
Мне вот главное запихнуть слово в буфер. Как понимаю нужно поменять тип и размер буфера. Сделал. Но как принять такой буфер? У меня получается что первый 3 цифры пишутся на Buf[0] остальное на Buf[1] это если их 6, если 8 то по 4 на буфер. Как этим вообще можно управлять?
Зод вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отправить видео захват(с веб-Кам.) Клиент->Сервер->Клиент RODNOC Мультимедиа в Delphi 17 03.10.2010 22:31
Клиент->Сервер->Клиент RODNOC Работа с сетью в Delphi 0 25.09.2010 11:49
сервер+клиент+клиент на телефон Razyiller Работа с сетью в Delphi 3 01.04.2010 20:10
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18