|
Программирование серверов на основе сокетов в Дельфи
|
Алгоритм работы сокетного сервера
| · | Определение св-в Port и ServerType - чтобы к серверу могли нормально подключаться клиенты, нужно, чтобы порт, используемый сервером точно совпадал с портом, используемым клиентом (и наоборот). Свойство ServerType определяет тип подключения (подробнее см.ниже);
|
| · | Открытие сокета - открытие сокета и указанного порта. Здесь выполняется автоматическое начало ожидания подсоединения клиентов (Listen);
|
| · | Подключение клиента и обмен данными с ним - здесь подключается клиент и идет обмен данными с ним. Подробней об этом этапе можно узнать ниже в этой статье и в статье про сокеты (клиентская часть);
|
| · | Отключение клиента - Здесь клиент отключается и закрывается его сокетное соединение с сервером;
|
| · | Закрытие сервера и сокета - По команде администратора сервер завершает свою работу, закрывая все открытые сокетные каналы и прекращая ожидание подключений клиентов.
|
| · | ActiveConnections (Integer) - количество подключенных клиентов;
|
| · | ActiveThreads (Integеr) - количество работающих процессов;
|
| · | Connections (array) - массив, состоящий из отдельных классов TClientWinSocket для каждого подключенного клиента. Например, такая команда:
|
| · | ServerSocket1.Socket.Connections[0].SendText('Hello!');
|
| · | отсылает первому подключенному клиенту сообщение 'Hello!'. Команды для работы с элементами этого массива - также (Send/Receive)(Text,Buffer, Stream);
|
| · | IdleThreads (Integer) - количество свободных процессов. Такие процессы кэшируются сервером (см. ThreadCacheSize);
|
| · | LocalAddress, LocalHost, LocalPort - соответственно - локальный IP-адрес, хост-имя, порт;
|
| · | RemoteAddress, RemoteHost, RemotePort - соответственно - удаленный IP-адрес, хост-имя, порт;
|
| · | Методы Lock и UnLock - соответственно, блокировка и разблокировка сокета.
|