("Alec Voropay" mailto:alec@sensi.org, Alex Kanavin, Alexander Pevzner) В системе X Window понятия "клиент" и "сервер" кажутся перепутанными. В действительности, никакого противоречия тут нет. Весь вопрос лишь в том, что такое "cервер" ? Возмем например print-server или file-server. Это какое-то устройство для коллективного использования "ресурса". Например, единственный print-server на организацию. Так вот когда-то давно (лет 30 назад ;) комплект из цветного дисплея и памяти на 256К был страшно дорогой игрушкой :-) и обслуживал кучу программ. Это и был display-server или, в комплекте с мышью и клавиатурой, X-server. Таким образом, X-server - это программа для управления Video-подсистемой, мышью и клавиатурой и выполняющая команды типа "нарисовать красную точку" или "вывести букву А фонтом Arial". Существует куча X-Server-ов : cвободные XFree86, коммерческие AcceleratedX, под MS Windows : eXceed, X-Win, под VAX VMS и даже в виде отдельных железок c дисплеем : NCD, Tatung (их еще называют X-Terminal). Таким образом, пользовательские программы, например Netscape - это "X-клиенты", которые обращаются к "X-серверу" для отображения и ввода. Связь между X-сервером и X-клиентом может быть по TCP/IP, по Unix-Socket, по IPX или даже по COM-порту. Поддержка конкретных способов связи зависит от реализации серверов и клиентских библиотек, например XFree знает только про первые два способа и еще DECNet. Всякая X-программа ("X-клиент") сначала должна уcтановить соединение с X-сервером. Его местонахождение X-клиент узнает через переменную окружения DISPLAY= или ключ в командной строке. Один X-сервер может обслуживать множество программ, работающих на разных хостах. Как наиболее простой случай, все они, и X-сервер и Х-программы работают на одном и том же компьютере. Обычные, "консольные" (алфавитно-цифровые) программы тоже можно запустить под X, через эмулятор терминала (например xterm, rxvt, eterm e.t.c.). Это специальная X-программа, которая с одной стороны работает как эмулятор терминала:), отрисовывает символы и отрабатывает ESC-последовательности, а с другой стороны представляется как обычный терминальный порт (через псевдотерминалы ptyXX). Cледует заметить, что с точки зрения системы нет разницы между иксовыми и обычными программами. И те и другие используют один и тот же набор системных вызовов. Разница же упрятана в библиотеку XLib, с которой слинкованы иксовые программы, - именно она устанавливает связь с X сервером, посылает ему команды, принимает ответы итд. Кроме того, некоторые программы (emacs, например) могут работать как через X сервер, так и без него (через обычный терминал).
Разница между иксовыми сервером и клиентом
Также по теме: