Вам нужно использовать TidTCPServer
, который является многопоточным внутри.Вам не нужно управлять потоками.Все прозрачно, поэтому то, как вы пишете приложение для одного клиента, (почти) так же, как вы пишете его для многих.Смотрите событие OnConnect
.Существует параметр TidContext
, внутри которого есть TThreadList.Вы можете использовать это событие, чтобы «зарегистрировать» / добавить своих клиентов в свой собственный массив / список и OnDisconnect
, чтобы удалить клиентов.
Событие OnExecute
инициируется, когда сервер получает сообщение.Используйте его параметры для чтения отправленного сообщения.
Также вам необходимо другое приложение , которое будет вашим клиентом, используя TidTCPClient
.В этом приложении вы установите адрес вашего сервера (см. Свойство Host), а также порт, который должен совпадать с адресом сервера.Вы должны вызвать Connect
(когда сервер работает) и для отправки строк у вас есть метод SendCmd
.(Также см. IOHandler.WriteLn
, если хотите)
Есть и другие вещи, но я думаю, этого достаточно, чтобы вы начали.Также вы можете публиковать сообщения на форумах Embarcadero на форуме .Delphi.Winsock, на котором плавают члены команды Indy.Или, может быть, вы можете спросить прямо в .Delphi.Non-Technical, и парни там помогут вам.
Другой подход - DataSnap , который является более объектно-ориентированным слоем по сравнению с Indy (не дляпутать с DBX), который дает JSON, REST и другие вкусности.Смотрите небольшой обзор здесь .