На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Named Pipe Server Process



The simplest server process can use the CreateNamedPipe function to create a single instance of a pipe, connect to a single client, communicate with the client, disconnect the pipe, close the pipe handle, and terminate. Typically, however, a server process must communicate with multiple client processes. A server process can use a single pipe instance by connecting to and disconnecting from each client in sequence, but performance would be poor. To handle multiple clients simultaneously, the server process must create multiple pipe instances.

There are three basic strategies for servicing multiple pipe instances.

· Create multiple threads (and/or processes) with a separate thread for each instance of the pipe. For an example of a multithreaded server process, see Multithreaded Server.
· Overlap operations by specifying an OVERLAPPED structure in the ReadFile, WriteFile, and ConnectNamedPipe functions. For an example of a server process that uses overlapped operations, see Server Using Overlapped Input and Output.

· Overlap operations by using the ReadFileEx and WriteFileEx functions, which specify a completion routine to be executed when the operation is complete. For an example of a server process that uses completion routines, see Server Using Completion Routines.



The multithreaded server strategy is easy to write, because the thread for each instance handles communications for only a single client. The system allocates processor time to each thread as needed. But each thread uses system resources, which is a potential disadvantage for a server that handles a large number of clients. Other complications occur if the actions of one client necessitate communications with other clients (as for a network game program, where a move by one player must be communicated to the other players).

With a single-threaded server, it is easier to coordinate operations that affect multiple clients, and it is easier to protect shared resources (for example, a database file) from simultaneous access by multiple clients. The challenge of a single-threaded server is that it requires coordination of overlapped operations in order to allocate processor time for handling the simultaneous needs of the clients.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Процесс Сервера Поименованной Трубы



Самый простой процесс сервера может использовать функцию CreateNamedPipe, чтобы создавать единственный пример трубы, подключать к единственному клиенту, связываться с клиентом, разъединять трубу, закрывать ручку трубы и завершаться. Обычно, тем не менее, процесс сервера должен связаться со многочисленными процессами клиента. Процесс сервера может использовать единственный пример трубы соединяясь на и разъединяя от каждого клиента в последовательности, но исполнение должно быть бедно. Для того, чтобы оперировать многочисленных клиентов одновременно, процесс сервера должен создать многочисленные примеры трубы.

Есть три основных стратегии для обслуживания многочисленных примеров трубы.

Создавать многочисленную резьбу (и/или процессы) с отдельной резьбой для каждого примера трубы. Для примера multithreaded процесса сервера, смотри Сервер Multithreaded.
Операции Перекрытия определяя ПЕРЕКРЫТУЮ структуру в ReadFile, WriteFile, и функциях ConnectNamedPipe. Для примера процесса сервера, который использует перекрытые операции, смотри Сервер, использовавший Перекрытый Ввод и Выход.

Операции Перекрытия используя ReadFileEx и функции WriteFileEx, которые определяют программу завершения, которая нужно выполняться когда операция завершенна. Для примера процесса сервера, который использует программы завершения, смотри Сервер, использовавший Программы Завершения.



multithreaded Стратегия сервера легко должна записывать, поскольку резьба для каждого примера оперирует связь для только единственного клиента. Система распределяет время процессора в каждую резьбу как и требуется. Но каждая резьба использует системные ресурсы, которые являются потенциальным недостатком для сервера, который оперирует много клиентов. Другие осложнения происходят если действия одного клиента требуют связь с другими клиентами (как для сетевой программы игры, где перемещение одним плейером должно быть сообщено другие плейеры).

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


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz