Добрый день!
Решил попробовать свои силы и написать простой чат для общения. Ничего особого, просто для общения двух людей на разных ПК.
Создал простую форму, добавил на нее:
1. idTcpClient переименовал -> ChatClient
2. idTcpServer -> ChatServer
3. TEdit -> EHost (тут IP адрес ПК для соединения, пока поставил 127.0.0.1)
4. TEdit -> EMessage (тут ввожу сообщение для отправки)
5. TListBox -> LMessage (тут показываю присланное сообщение)
6. Button -> просто назвал Send (при нажатии сообщение отправляется)
Установил ChatServer->Active=true;
Вот код кнопки отправки сообщения:
Код C++
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ChatClient->Host = EHost->Text;
ChatClient->Connect();
// if(ChatClient->Connected()==true) ChatClient->Socket->Write("Client is connected");
ChatClient->Socket->Write(EMessage->Text.Length());
ChatClient->Socket->Write(EMessage->Text,enUTF8);
ChatClient->Disconnect();
EMessage->Text="";
}
вот код метода Execute -> idTcpServer
Код C++
void __fastcall TForm1::ChatServerExecute(TIdContext *AContext)
{
int length = AContext->Connection->Socket->ReadLongInt();
UnicodeString Message = AContext->Connection->Socket->ReadString(length,enUTF8);
AContext->Connection->Disconnect();
LMessage->Items->Add(Message);
}
Сообщение набранное латиницей вроде отправляется и принимается.
Сообщение же набранные кириллицей не отправляются, или отправляются но доходят не полностью, например отправляем "Привет", а приходит "При" или вообще вопросы.
Я понимаю, что скорее всего проблема в кодировке, но вот как поправить все...не могу сообразить.
Кто знает в чем может быть дело? Буду благодарен за любую помощь!