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


Автор: Serega 16.4.2005, 21:44
есть проблема передачи данных от СlientSocket ServerSockety. Приведу пример кода:
Client

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientSocket1->Active=true;

}

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

void __fastcall TForm1::Button3Click(TObject *Sender)
{
ClientSocket1->Socket->SendText(Edit1->Text);
ClientSocket1->Socket->SendText(Edit2->Text);
}
//---------------------------------------------------------------------------

Server
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ServerSocket1->Active=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{

Edit1->Text=Socket->ReceiveText();
Edit2->Text=Socket->ReceiveText();

}

в результате посылаются два мэсага от двух эдитов, но выводятся они тока в первый эдит. как мне разделить передаваемые данные. и могу ли я передавать от сервера результат, например склеенную из двух полученных мэсагов строку?

Автор: drinkOut 16.4.2005, 23:22
По-моему тебе нужно вставить разделитель в передаваемый текст.
Вот примерный код:
Код
/* CLIENT */

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ClientSocket1->Open();
}

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

void __fastcall TForm1::Button3Click(TObject *Sender)
{
  char* textToSend;
  strcat(textToSend, Edit1->Text);
  strcat(textToSend, "\n");
  strcat(textToSend, Edit2->Text);
  ClientSocket1->Socket->SendText(textToSend);
}
//---------------------------------------------------------------------------

/* SERVER */

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
  ServerSocket1->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
  Edit1->Text = Socket->ReceiveText();
  Edit2->Text = Socket->ReceiveText();
}

Но, правда, я писал экспромтом (C++ Builder'а сейчас под рукой нет), так что возможны некоторые погрешности... smile

В крайнем случае, если вышепреведённый код не покатит, то можно сначала записать текст из сокета в какую-нибудь строковую переменную, а потом уже заняться парсингом этой строки и распределинием нужных кусков по нужным контролам.

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