Что такое сокеты(Socket)? Сокеты-интерфейс для обеспечения обмена данными между сервером и клиентами. Начнем мы с самого простого(по-моему мнению) ClientSocket и ServerSocket.
Установка: Component->Instal Packages->Add->в папке вашей Delphi открыть папку «bin» и выбрать файл dclsockets70.bpl(в XE6 dclsockets200.bpl)->OK
Компоненты появятся на вкладке Internet.
Свойства ServerSocket:
ServerSocket |
|
Свойства |
Описание |
Значения |
Active |
Показывает работает сервер или нет |
True, False |
Port |
Должен быть одинаковым для клиента и сервера |
1025-65535
(1-1024) заняты системой |
ServerType |
Тип сервера |
stNonBlocking - синхронная работа с клиентскими сокетами. При таком типе сервера Вы можете работать с клиентами через события OnClientRead и OnClientWrite. stThreadBlocking - асинхронный тип. Для каждого клиентского сокетного канала создается отдельный процесс (Поток). |
Service |
Cтрока, определяющая службу |
ftp, http, pop |
ThreadCacheSize |
Kоличество клиентских процессов (потоков), которые будут кэшироваться сервером. |
По-умолчанию 10 |
События возникающие у ServerSocket:
ServerSocket |
|
События |
Описание |
OnClientConnect |
возникает, когда клиент установил сокетное соединение и ждет ответа сервера (OnAccept) |
OnClientDisconnect |
возникает, когда клиент отсоединился от сокетного канала |
OnClientError |
возникает, когда текущая операция завершилась неудачно, т.е. произошла ошибка |
OnClientRead |
возникает, когда клиент передал серверу какие-либо данные. |
OnClientWrite |
возникает, когда сервер может отправлять данные клиенту по сокету; |
OnGetSocket |
в обработчике этого события вы можете отредактировать параметр ClientSocket |
OnGetThread |
в обработчике этого события вы можете определить уникальный процесс (Поток) |
OnThreadStart |
возникает, когда процесс(Поток) запускается |
OnThreadEnd |
возникает, когда процесс(Поток) останавливается |
OnAccept |
возникает, когда сервер принимает клиента или отказывает ему в соединении; |
OnListen |
возникает, когда сервер переходит в режим ожидания подсоединения клиентов |
Общение между клиентом и сервером определяется комбинацией слов(прим ReceiveText)
Send |
Text |
Receive |
Buffer |
|
Stream |
Дополнительные методы и свойства(ServerSocket.Socket.<Параметр из таблицы ниже>)
ActiveConnections |
Количество подключенных клиентов |
ActiveThreads |
Количество работающих процессов |
Connections |
Массив подключенных клиентов |
IdleThreads |
Количество свободных процессов. |
LocalAddress |
Локальный IP-адрес |
LocalHost |
Локальный хост |
LocalPort |
Локальный IP-порт |
RemoteAddress |
Удаленный IP-адрес |
RemoteHost |
Удаленный хост |
RemotePort |
Удаленный IP-порт |
Lock |
Блокировка сокета |
UnLock |
Разблокировка сокета |
Рассматривать ClientSocket особого смысла нет, т.к. у него подобные свойства и события, в свойствах есть поля Host и Adress, что отвечает за имя пк-сервера и IP соответственно, событий немногим меньше.
|