Перейти к содержанию
Fire Monkey от А до Я
  • 0

[TidTCPServer] Подружить TCPServer(vcl) TCPClient(fmx)


serg557

Вопрос

Вопрос заключается в следующем - есть сервер сделанный в VCL

Server1->DefaultPort=6590
void __fastcall TForm3::Server1Execute(TIdContext *AContext) // на запрос от клиента
{
 TIdIOHandler *a = AContext->Connection->IOHandler;
 UnicodeString res = a->ReadLn(IndyUTF8Encoding(true));
 if (res == "zapros")
  {
   if (ListBox1->Items->Strings[0]!="")
	{
	a->WriteLn(ListBox1->Items->Strings[0],IndyUTF8Encoding(true));
	a->WriteLn(ListBox3->Items->Strings[0],IndyUTF8Encoding(true));
	ListBox2->Items->Add("("+AContext->Connection->Socket->Binding->IP+")"+ListBox1->Items->Strings[0]);
	}

есть клиент написанный на vcl

//порт указан вручную
 Client1->Host =Edit2->Text;
 if (Client1->Connected()==false)
 {
  try
 {
 Client1->Connect();

 }
 catch(...)
 {
  ShowMessage("Не удалось подключиться");
 }
 }
TIdIOHandler *a = Client1->IOHandler;
a->WriteLn("zapros",enUTF8);
Edit1->Text=a->ReadLn(enUTF8);
Edit5->Text=a->ReadLn(enUTF8);
a->Free();
}

рабочий, захотел переложить его на FMX:

Client1->Port=6590;
Client1->Host=Edit1->Text;
 if (Client1->Connected()==false)
 {
  try
  {
  Client1->Connect();

  }
 catch(...)
  {
  Client1->Socket->Close();
  ShowMessage("Не удалось подключиться");
  }
}
TIdIOHandler *a = Client1->IOHandler;
a->WriteLn("zapros",IndyUTF8Encoding(true));
Edit3->Text=a->ReadLn(IndyUTF8Encoding(true));
Edit5->Text=a->ReadLn(IndyUTF8Encoding(true));
Client1->Socket->Close();
a->Free();
}

выдает ошибку 

Цитата

 

Unknown protocol

 Может подскажет кто-как их помирить? (Сервер переписывать не вариант :) )

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

TIdIOHandler *a = Client1->IOHandler;
...
a->Free();
}

Меня одного этот участок кода несколько озадачил?

 

Ну и - не в http дело, тут же tcp в "чистом" виде используется вроде как. То есть - должно быть достаточно указания порт + хост (желательно - в IP виде)

 

Serg557, вы бы хоть сказали - на какой строке выдает ошибку, бо непонятно - то ли при коннекте, то ли при отправке. И кто выдает - клиент или сервер?

Изменено пользователем kami
Ссылка на комментарий
  • 0

Выдавал  клиент, но спасибо  krapotkin -натолкнул на мысль что компоненты IdTCPClient и IdTCPServer тут не причем и искать дальше.

Нашел компонент - IdHTTP - который действительно неправильно формировал запрос.

А так компоненты IdTCPClient и IdTCPServer  полностью адекватно друг с другом связываются.

Так что тема закрыта.

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...