Форум программистов, компьютерный форум CyberForum.ru

Delphi: FireMonkey

Войти
Регистрация
Восстановить пароль
 
TAZAQ
96 / 95 / 32
Регистрация: 28.01.2014
Сообщений: 272
#1

Реализация чата на Indy - Delphi FireMonkey

01.05.2014, 17:00. Просмотров 4780. Ответов 10
Метки нет (Все метки)

Став обладателем RS XE6 решил опробовать delphi в андройде, в целом был удовлетворен, оставшись недовольным скоростью компиляции проекта.
Возникла идея создания велосипеда - управление ПК с помощью смартфона, сразу мысль - реализация чата между устройствами, но из-за платформы доступны остались Indy компоненты.
Вопрос: Есть ли у кого пример по настройке компонентов и отправке сообщений?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2014, 17:00     Реализация чата на Indy
Посмотрите здесь:

Реализация чата на ASP.NET с использованием Long Polling C# ASP.NET
Трудности при написании чата. Покажите простой пример чата на 2 человека. PHP
Delphi FireMonkey Параллельные вычисления - реализация
Indy IdTCPClient прием байта от Wifi устройства Delphi FireMonkey
Реализация группового интерактивного чата C#
C++ Реализация простейшего чата: как избежать ошибок?
Delphi Реализация комнат для чата
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NOVICHOK2012
6 / 6 / 0
Регистрация: 13.04.2012
Сообщений: 99
04.05.2014, 17:47     Реализация чата на Indy #2
Могу только кодом помочь, сам уже пишу управление ПК с андроид смартфона. Дальше чат, думаю сам сможешь реализовать. Использованы компоненты TCP Client и TCP Server.

Клиент:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.Button8Click(Sender: TObject); //Подключение к серверу
begin
 idTcpClient1.Host:=edit1.text; //Вводим внутренний ip-adress сервера
 idTcpClient1.Port:=8080; //Порт клиента и сервера должен быть одним и тем же.
 idTcpClient1.Connect(); //Подключаемся к серверу
 if idtcpclient1.Connected=true then idTcpClient1.Socket.WriteLn('Client is connected'); //Если успешно подключились к серверу, то отправляем сообщение серверу о подключении. 
end;
 
procedure TForm1.Button3Click(Sender: TObject); //Отправка сообщения серверу
begin
 if idTcpClient1.Connected  then //Проверяем, есть ли подключение к серверу.
  begin
   idTcpClient1.Socket.WriteLn(edit2.text); //Посылаем текст, введенный в edit2, серверу.
   memo1.Lines.Add('['+Timetostr(time)+'] '+'Команда "'+ edit2.Text + '" послана серверу!'); //Добавляем запись в Memo клиента
  end
else memo1.Lines.Add('['+Timetostr(time)+'] '+'Вы не подключены к серверу!'); //Добавляем запись в Memo клиента
end;
Сообщение сервера клиенту добавляется так:
Delphi
1
Memo1.lines.add(IdTCPClient1.Socket.ReadLn);
Сервер:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.FormCreate(Sender: TObject);
begin
 idTcpServer1.DefaultPort:=8080; //Устанавливаем порт, такой же, как и у клиента
 idTcpServer1.Active:=true; //Включаем сервер
end;
 
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
s:string;
begin
s:= AContext.Connection.Socket.ReadLn; //Записываем в переменную "s" сообщение, присланное клиентом.
Memo1.Lines.add('['+Timetostr(time)+'] '+'['+AContext.Connection.Socket.Binding.PeerIP+'] '+ s); //Добавляем в Memo время, ip-adress клиента и сообщение
end;
Сообщение от сервера клиенту, отсылается так:
Delphi
1
AContext.Connection.Socket.Write('Сообщение');
Добавлено через 19 минут
TAZAQ, этот пример работает в только в внутренней сети. Кстати, можно сделать еще так: в программе на андроиде компоненты клиент и сервер, и на ПК те же два компонента, а не по одному, как я писал выше (на андроиде TCP Client, на ПК TCP Server), но тогда нужно знать внутренний ip обоих устройств. Так, наверное, даже лучше.
Infognom
Сообщений: n/a
04.07.2014, 21:50     Реализация чата на Indy #3
NOVICHOK2012, чёто не могу понять, как сделать, чтобы сервер отправлял сообщение клиенту и у клиента появлялось : (
от клиента серверу идёт нормально, а как для сервера кнопку Send написать?
Tetronis
0 / 0 / 0
Регистрация: 12.09.2014
Сообщений: 2
12.09.2014, 04:47     Реализация чата на Indy #4
А почему не использовать Tethering? раз юзается XE6
TAZAQ
96 / 95 / 32
Регистрация: 28.01.2014
Сообщений: 272
12.09.2014, 19:11  [ТС]     Реализация чата на Indy #5
Tetronis, можно подробней?
Tetronis
0 / 0 / 0
Регистрация: 12.09.2014
Сообщений: 2
15.09.2014, 01:22     Реализация чата на Indy #6
TAZAQ,
В сеплах к XE6 есть пример (Samples\Object Pascal\RTL\Tethering) + видео на ютрубе (https://www.youtube.com/watch?v=oeMQdvxi560)
Appi
20 / 20 / 6
Регистрация: 18.02.2015
Сообщений: 300
17.06.2015, 17:26     Реализация чата на Indy #7
Все таки подниму тему. Не совсем понятно как отправлять с сервера сообщение.
TAZAQ
96 / 95 / 32
Регистрация: 28.01.2014
Сообщений: 272
17.06.2015, 17:34  [ТС]     Реализация чата на Indy #8
Appi,
Delphi
1
TAP.SendString(TM.RemoteProfiles[индекс_удаленного_профиля], 'Описание сообщения', 'сообщение');
Где TAP и TM - TetheringAppProfile и TetheringManager
Sir_holms
0 / 0 / 0
Регистрация: 13.11.2015
Сообщений: 1
13.11.2015, 14:09     Реализация чата на Indy #9
Может кому понадобится. Вот на Инди написан пример простого сервер-клиентного приложения по отправки-получения текста. http://sourceforge.net/p/indy10clies...ng%20Exchange/
Bookkc1
2 / 2 / 0
Регистрация: 01.11.2012
Сообщений: 479
13.12.2016, 16:33     Реализация чата на Indy #10
В сервере ругается на строчку
Delphi
1
s:= AContext.Connection.Socket.ReadLn;
Прошу помощи

Добавлено через 26 минут
Насколько я понял, проблема в компоненте AContext. Как его подключить и где его взять ?

Добавлено через 8 минут
где взять IdContext.dcu ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2017, 18:06     Реализация чата на Indy
Еще ссылки по теме:

Реализация чата на Unix сокетах C++ Linux
Реализация сохранения игры на андроид в Firemonkey Delphi FireMonkey
Реализация чата без перезагрузки страницы JavaScript

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
serega2001
0 / 0 / 0
Регистрация: 30.04.2016
Сообщений: 3
23.02.2017, 18:06     Реализация чата на Indy #11
Помгите пожалуйста, такая проблема возникла. Написал чат по вашим примерам При отправке русские буквы приходят в виде ????, с латинскими буквами и цифрами все норм, что делать?
Yandex
Объявления
23.02.2017, 18:06     Реализация чата на Indy
Ответ Создать тему
Опции темы

Текущее время: 04:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru