.
Monday 21st of May 2012    

Информация

Счетчики

Голосование

Лучшая марка телефона
 

Реклама

фильмы онлайн

фильмы онлайн


ClientSocket
загрузка...

Рано или поздно к серверу обращается клиент с настоятельной просьбой об обслуживании, а если сервер пользуется популярностью, то подобных просителей наберется немало. В ожидании обслуживания клиенты выстраиваются в очередь, как перед переполненным рестораном. К счастью, интерфейсом WinSock предусмотрен «швейцар», с обязанностями которого превосходно справляются два перегружаемых метода:

function Accept(var ClientSocket: TCustomIPClient): boolean; function Accept : boolean;

Из череды томящихся в ожидании сеанса клиентских сокетов метод извлекает сокет, занявший очередь первым, и узнает все его паспортные данные (имя хоста, номер порта, тип сокета, режим блокировки). Получив исчерпывающую информацию о потенциальном клиенте, функция Accept() возвратит true - признак того, что клиентский сокет может быть принят на обслуживание. При использовании первого перегружаемого метода дополнительно будет возвращена ссылка на клиент в формальном параметре ClientSock-et: TCustomIPClient.

В режиме bmThreadBlocking метод Accept() будет вызван автоматически в тот момент, когда к своим прямым обязанностям приступит поток обслуживания.

В момент приема клиента на обслуживание генерируется событие: property OnAccept: TSocketAcceptEvent;

type TSocketAcceptEvent = procedure (Sender: TObject; ClientSocket: TCustomIPClient) of object;

Это самое важное событие для сервера, где ClientSocket - это ссылка на мечтающий об обслуживании клиентский сокет. Если сервер функционирует врежиме bmThreadBlocking, то событию OnAccept() будет предшествовать событие OnGetThread() , которое вызывается перед тем, как поток управления серверного сокета приступит к созданию потока обслуживания. В этот момент программист может подменить создаваемый по умолчанию поток обслуживания TClientSocketThread своей собственной версией.


загрузка...
 

Самое популярное:

bottom

карта сайта