Что такое сокеты(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 соответственно, событий немногим меньше.
|