Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > ServerSocket и ClientSocket обмен данными


Автор: WapCel 5.10.2012, 15:34
Подскажите как обмен данными идет через SendText и ReceiveText в данных компонентах (ServerSocket и ClientSocket). А то посылаю с клиента на сервер массив строковый, построчно посылаю....
А ощущение, что приходит несколько строк, потом целый комок со строчками, подряд склеенными, потом опять по одной, в общем безобразие получается  smile 


Код

//SEND from SERVER
SendText("arg1");
SendText("arg2");
SendText("arg3");

//-----------------------------------------------------------

//RECEIVE from CLIENT
int i=0;
ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket)
{
i++;
String mReceiveText = Socket->ReceiveText();
}


// i = 1; // but not 3 !(3 send = 3 recv)!
// mReceiveText = "arg1arg2arg3";

Автор: WapCel 5.10.2012, 18:40
Please help me..

Автор: artsb 5.10.2012, 20:33
Цитата(WapCel @  5.10.2012,  15:34 Найти цитируемый пост)
А ощущение, что приходит несколько строк, потом целый комок со строчками, подряд склеенными, потом опять по одной, в общем безобразие получается

Используйте свой формат для отправки/получения строк.
Отправляйте сначала длину строки в байтах, а потом саму строку. Читайте сначала длину строки, а потом саму строку. Проблем быть не должно. Отправляйте/получайте с помощью SendBuf/ReceiveBuf. Для размера строки выделите строго несколько байт, в зависимости от того, какая максимальная длина строки у вас будет. Например, если длина строки не будет превышать 255 символов, то вам хватит одного байта.

Автор: WapCel 5.10.2012, 23:32
Цитата(artsb @ 5.10.2012,  20:33)
Цитата(WapCel @  5.10.2012,  15:34 Найти цитируемый пост)
А ощущение, что приходит несколько строк, потом целый комок со строчками, подряд склеенными, потом опять по одной, в общем безобразие получается

Используйте свой формат для отправки/получения строк.
Отправляйте сначала длину строки в байтах, а потом саму строку. Читайте сначала длину строки, а потом саму строку. Проблем быть не должно. Отправляйте/получайте с помощью SendBuf/ReceiveBuf. Для размера строки выделите строго несколько байт, в зависимости от того, какая максимальная длина строки у вас будет. Например, если длина строки не будет превышать 255 символов, то вам хватит одного байта.

хорошая идея. спасибо.
p.s. я думал и с sendbuf также будет)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)