Создание Internet-приложений в среде Delphi. Серверные сокеты

   
На этом шаге мы рассмотрим использование серверных сокетов.

   
Одного компонента TServerSocket, если его поместить на форму приложения, достаточно для того, чтобы ваше приложение превратилось в сервер,
работающий по протоколу TCP/IP. В процессе работы этот компонент будет использовать один экземпляр объекта TServerWinSocket,
необходимый для прослушивания порта и по одному экземпляру TServerClientWinSocket для каждого открытого соединения с сокетом клиента.
Серверный компонент выполняет следующие задачи:

  • слушает указанный ему порт;
  • выполняет соединение с клиентским сокетом;
  • получает информацию о соединении;
  • обменивается данными с клиентским сокетом;
  • закрывает соединение.

   
Перед началом работы, серверному сокету нужно задать номер порта, который он будет слушать. Номер задается в свойстве Port или неявным образом,
если в свойстве Service вы указываете имя используемой службы.

   
Вы можете открыть слушающее соединение во время исполнения, если вызовете метод Open. Если при разработке программы вы укажете в свойстве Active
значение True, то при запуске программы, слушающий сокет будет активизироваться автоматически.

   
Слушающий сокет автоматически обслуживает запрос клиентского сокета на соединение. При этом вызывается событие OnClientConnect.

   
Данные о слушающем соединении и активных соединениях вы можете получить из составного свойства Socket. Объекты, обслуживающие активные соединения,
помещаются в свойстве Connections. Используя свойство ActiveConnections, в котором указывается общее число открытых соединений, вы
можете обращаться к нужному объекту в массиве Connections по индексу; значение индекса должно изменятся от 0 до ActiveConnections-1.

   
Закрываются серверные соединения вызовом метода Close. При этом завершаются все открытые соединения, удаляются из очереди все запросы
на открытие соединения, и закрывается слушающее соединение. Клиент, в свою очередь, может сам закрыть свое соединение, что не помешает работе
других активных соединений, - в этом случае в серверном сокете инициируется событие OnClientDisconnect.

   
На следующем шаге мы рассмотрим работу с событиями сокетов.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий