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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2016, 20:58   #1
Vladimirskiu
 
Регистрация: 14.11.2012
Сообщений: 3
По умолчанию SendBuf и SendText путаница в приёме

Здравствуйте, мне необходимо отправить с клиента на сервер массив и тест, осуществляю при помощи:

ClientSocket1.Socket.SendBuf(mass,s izeof(mass));
ClientSocket1.Socket.SendText(memo2 .Text);

приём

ServerSocket1.Socket.Connections[0].ReceiveBuf(mass,sizeof(mass));
Opisanie:=ServerSocket1.Socket.Conn ections[0].ReceiveText;

Всё передаётся и принимается, но вот только текст передаётся не правильно вот пример:

отправляю: " Произошла странная ошибка"
а приходит
-386993937-454101519-249498904транная ошибка

Интересно, что если поменять местами ReceiveBuf и ReceiveText местами, то криво примется массив, подскажите, как решить эту задачку?
Vladimirskiu вне форума Ответить с цитированием
Старый 30.04.2016, 21:05   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

потому что массив вы некорректно отправляете и читаете.
вам надо отправлять его длину еще(если не фиксирована)
и читать начиная с первого элемента
в размер siteof(arrayType)*array.Length)
если длина не фиксирована то передавайте ее отдельно.

причем массив так можно передать только если он не содержит ссылочных данных и указателей(string, TObject и тп, ^)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.04.2016, 21:46   #3
Vladimirskiu
 
Регистрация: 14.11.2012
Сообщений: 3
По умолчанию

массив у меня фиксированный всегда 3 цифры
Vladimirskiu вне форума Ответить с цитированием
Старый 30.04.2016, 22:18   #4
Vladimirskiu
 
Регистрация: 14.11.2012
Сообщений: 3
По умолчанию

Может я вас не правильно понял, исправил в клиенте на
ClientSocket1.Socket.SendBuf(mass,s izeof(integer)*3);
но ничего не изменилось.
Суть в чём, я в массиве отправляю значения и при получении раскрываю массив, в соответствие с ними в таблицу заносятся данные. Когда он криво принимает сообщение в первую строку таблицы вносятся данные из массива, но потом он создаёт(почему то) вторую строчку и вносит туда только тот кусок текста который нормально передался. Может эта информация поможет понять проблему лучше. Я новичок в программирование, по этому очень надеюсь на вашу помощь, в остальном программа работает.
Vladimirskiu вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Socket.SendText проблема SwiP Работа с сетью в Delphi 11 19.03.2012 13:36
Можно ли посредством Socket.SendText отправить команду? NiKiToZZ- Помощь студентам 1 23.01.2011 22:47
Подсчёт пульсаций и пауз при приёме данных с ИК пульта Terran Win Api 6 21.11.2009 12:19
ClientSocket/Serversocket SendText Lime Работа с сетью в Delphi 10 08.10.2009 19:52
Ошибка при приёме данных ServerSocket'ом Terran Работа с сетью в Delphi 2 25.01.2009 12:20