Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2018, 13:52   #1
Umar95
Пользователь
 
Регистрация: 21.02.2016
Сообщений: 21
По умолчанию Delphi tcp_server_client

Добрый день подскажите пожалуйста почему программа ругается на эту строку
Цитата:
procedure IdTCPServer1Execute(AContext: TIdContext);
, пишет что не может определить
Цитата:
TIdContext
вот сам ошибка
Цитата:
[dcc32 Error] Unit1.pas(35): E2003 Undeclared identifier: 'TIdContext
[dcc32 Error] Unit1.pas(99): E2005 'TIdContext' is not a type identifier
[dcc32 Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit1.pas'
'
Umar95 вне форума Ответить с цитированием
Старый 25.04.2018, 14:17   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

В uses добавь IdContext.

Код:
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdContext, IdBaseComponent, IdComponent,
  IdCustomTCPServer, IdTCPServer;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 25.04.2018, 14:40   #3
Umar95
Пользователь
 
Регистрация: 21.02.2016
Сообщений: 21
По умолчанию

программа компилируется без ошибки, но не запускается выводит ошибку, это ошибка появляется когда ставлю на IdTCPServer1 галочку в TRUE
Изображения
Тип файла: png 2018-04-25_18-37-10.png (25.3 Кб, 161 просмотров)
Umar95 вне форума Ответить с цитированием
Старый 25.04.2018, 15:37   #4
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Добавь что он просит. Сделай обработчик события OnExecute.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 25.04.2018, 16:00   #5
Umar95
Пользователь
 
Регистрация: 21.02.2016
Сообщений: 21
По умолчанию

Код:
procedure IdTCPServer2Execute(AContext: TIdContext);
begin
  AContext.Connection.Socket.WriteLn('123');
end;
сделал такой процедуры и вызываю так
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  // Отвечаем
  IdTCPServer2Execute(AContext);
end;
и выдает ошибку, как можно реализовать чтоб сервер отправлял сообщение клиентам по нажатию кнопки
Изображения
Тип файла: png 2018-04-25_20-00-14.png (44.7 Кб, 128 просмотров)
Umar95 вне форума Ответить с цитированием
Старый 25.04.2018, 20:39   #6
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Вот смори набросал по быстрому:
Вложения
Тип файла: rar Сокеты.rar (2.26 Мб, 34 просмотров)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 27.04.2018, 10:38   #7
Umar95
Пользователь
 
Регистрация: 21.02.2016
Сообщений: 21
По умолчанию

Цитата:
Pavia
спасибо большое за пример, с подключением разобрался, теперь только осталось с отсоединение клиента понять как работает
Код:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  { Здесь клиент подсоединяется }
  Memo1.Lines.Add(TimeToStr(Now) + ' Client connected');
  StringGrid1.RowCount := StringGrid1.RowCount + 1;
  CountPC := CountPC + 1;
  StringGrid1.Cells[0, CountPC] := IntToStr(CountPC);
  StringGrid1.Cells[1, CountPC] := ServerSocket1.Socket.Connections
    [ServerSocket1.Socket.ActiveConnections - 1].RemoteAddress;
  StringGrid1.Cells[4, CountPC] := 'На связи';
end;
тут на прием сделал немножко кодинг и вывожу информейшин на таблицу(рис 1), а как можно реализовать чтобы при обратной соединений/отсоединений того же клиента у меня просто менялась на таблице слова на связи/не в сети
Изображения
Тип файла: png рисунок 1.png (49.6 Кб, 126 просмотров)
Umar95 вне форума Ответить с цитированием
Старый 27.04.2018, 13:31   #8
Umar95
Пользователь
 
Регистрация: 21.02.2016
Сообщений: 21
По умолчанию

и еще один вопрос, можно ли задать диапазон портов чтобы подключенные клиенты были в рамках этого диапазона (например от 35000 до 37000)
Umar95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в libcef.dll только с Delphi 7, в Delphi XE3 - нет noname_06 Общие вопросы Delphi 6 08.05.2013 06:49
Не изменяется интерфейс моей программы при переходе с Delphi 7 на Delphi 2010 Elvisnya Общие вопросы Delphi 3 28.04.2011 15:59
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54