Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
14
Добавлен:
20.04.2024
Размер:
15.32 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

P

D

 

 

<Page 070>

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

Юниксоид

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВЕЩАЕМ В СЕТИ!

Andrushock (andrushock@real.xakep.ru)

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

t

 

 

ХАКЕР\¹56\Август\2003P

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NOW!

o

КУРС НАЧИНАЮЩЕГО

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

df-x chan

 

 

 

 

 

w Click

to

 

 

 

 

 

m

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

МЕДИАМАГНАТА

ВЕЩАЕМ Â ÑÅÒÈ!

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

Мал ffmpeg, да дорог

Разработчики ультрабыстрого аудио/видео конвертера ffmpeg с недавнего времени закрыли анонимный доступ к своему CVS-репозиторию, поэтому придется скачать автоматически генерируемый ежедневный снапшот исходного кода. После распаковки архива перейдем в созданный каталог, озадачим скрипт configure инсталляционным каталогом, скомпилируем и установим:

$ tar zxvf ffmpeg-cvs-YEAR-MONTH-DAY.tar.gz $ cd ffmpeg-cvs-YEAR-MONTH-DAY

$ ./configure --prefix=/usr/local/ffmpeg $ nice make

# make install

В итоге мы получим статически слинкованные (т.е. не зависимые от программных библиотек) кодек libavcodec для воспроизведения видеоданных и ffserver для реализации потокового вещания. Простейший конфигурационный файл (синтаксис которого очень напоминает конфиг Apache) потокового mp3-сервера может состоять всего лишь из четырех строчек:

# vi /etc/ffserver.conf

<Stream girls.mp3>

File /path/to/mp3/girls.mp3 Format mp2

</Stream>

Хотя, конечно же, корректней будет сразу задать все необходимые параметры:

<Stream test.mp3>

File /path/to/music/girls.mp3 Format mp2

AudioCodec mp3 AudioBitRate 64 AudioChannels 1 AudioSampleRate 44100 NoVideo

</Stream>

Запускаем ffmpeg-сервер и проверяем, за’bind()’ился ли он на дефолтный 8080 порт:

#/usr/local/ffmpeg/bin/ffserver -f /etc/ffserver

#netstat -na --inet | grep 8080

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN

Что же подразумевают под потоковым аудио и видеовещанием? Обычно мы действуем последовательно: с удаленного сервера скачиваем на винт нужный файл и скармливаем его проигрывателю. В случае с потоковой информацией все происходит совсем по-другому: сервер, на котором хранятся транслируемые данные, единовременно осуществляет одностороннюю доставку всем клиентам, подписавшимся на определенный виртуальный канал. Доставка происходит односторонняя, так как пользовательские плееры не отправляют никаких команд на сервер, а просто воспроизводят полученные данные в реальном времени, не сохраняя их на жесткий диск.

 

 

1

 

2

 

3

 

4

 

70

Ньюсы

Феррум

Inside

PC_Zone

Implant

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

<PageP

 

071>

 

 

 

 

i

 

 

 

 

 

 

 

r

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

to

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

После выполнения последней команды свежеиспеченные

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

n

.c

 

бинарики растасуются по каталогам, затем будет выданоdf

 

 

 

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

 

-x cha

 

e

 

приглашение дважды ввести пароль администратора DSS и вуаля – наш сервер установлен и запущен. Но для возможности конфигурирования через web-интерфейс еще потребуется загрузить перловый скрипт:

# /usr/local/sbin/streamingadminserver.pl

Если у тебя этот порт занят апачем или проксей, то в конфиге просто переопредели его значение директивой Port:

Port 8090

Теперь для проверки на клиентской машине открываем Winamp, указываем адрес только что созданного mp3сервера: Add -> Add URL http://ip.address.of.ffserver/test.mp3 и наслаждаемся запрошенной композицией. Для трансляции видео поступаем точно таким же способом (тестовый видеоролик sample.asf можно взять из установленного WinXP в каталоге Program Files\Movie Maker):

# vi /etc/ffserver.conf <Stream test.asf>

File /path/to/movies/sample.asf Format asf

</Stream>

Перезагружаем ffserver, вызываем Windows Media Player и вводим в адресную строку расположение, обрати внимание, не ролика, а созданного потока: File -> Open URL http://ip.address.of.ffserver/test.asf. Если возникнет необходимость транслировать видеоданные без звукового сопровождения, то следует добавить директиву NoAudio. Как ты мог заметить, в приведенных выше примерах файлы транслируются в сеть «по одному». К сожалению, ffserver не умеет работать с плейлистами, зато понимает так называемый глоббинг (раскрытие имен файлов):

File /path/to/music/*

Ограничение пропускной способности и числа одновременно подключенных пользователей; поддержка протоколов RTPS, SDP и списков контроля доступом ACL; работа с самыми различными аудио и видеоформатами: MP3, OGG, AC3, Real Audio, Macromedia Flash, MPEG1, MPEG4; журналирование пользовательских запросов – со всеми этими задачами прекрасно справляется ffserver. Очевидно, что при минимальных системных требованиях сервер ffmpeg предоставляет достаточно широкие возможности для развертывания потокового мультимедийного сервера, однако практически полное отсутствие документации портит впечатление об этой программе.

Кошерное яблочко

Прямой противоположностью маленькому, быстрому и свободно распространяемому ffmpeg выступает Darwin Streaming Server - монументальный потоковый сервер от небезызвестной компании Apple. Но не спеши обременять свой download manager новой ссылкой, так как сна- чала придется немного потрудиться и заполнить на сайте

Какие же задачи мы хотим решать с помощью потокового сервера, и какие компьютерные мощности можем выделить для этих целей? Если планируется создание исключительно mp3-сервера, то вполне достаточно будет P133 с 32 Мб ОЗУ, либо P233 с 64 мегами в случае со связкой Apache + mod_mp3. Для небольшого потокового киносервера потребуется как минимум шустрый селерон со 128 Мб оперативки на борту плюс производительная дисковая подсистема, а для трансляции телепередач по локальной сети хорошей отправной точкой станет PIII, так как сжатие в MPEG1/MPEG4 будет производиться «на лету». Тестирование проводилось в 100-мегабитной сети. Сервером выступал Celeron600/128mb/80G/Gentoo Linux 1.4rc4. Роль клиентов выполняли компьютеры с установленными Win98SE и WinXP Pro SP1.

анкету, как всегда согласившись со всем, что предлагают. Только после этой не слишком утомительной процедуры тебе разрешат скачать девять с половиной (нет, не недель) мегабайт удовольствия. Почему удовольствия?

Суди сам: поддержка форматов MP3, MPEG1, MPEG4; поддержка протокола SSL для создания защищенных соединений; симпатичный и интуитивно понятный web-ин- терфейс; удобная работа с плейлистами (drag’n’drop присутствует); простота в администрировании; тесная интеграция с проектом mpeg4ip (кодирование, транслирование и воспроизведение MPEG4). Итак, после того, как ты расправишься с архивом, предстоит произвести ряд не совсем привычных команд, поскольку стандартной установку сервера никак не назовешь:

#tar zxvf DSS-4_1_3.src.tar.gz

#cd DSS-4_1_3.src

#./Buildit

#mkdir altroot

#./DSS_MakeRoot -f altroot

#cd altroot

#./Install

Теперь в браузере набиваем http://ip.address.of.dss:1220/ и настраиваем потоковый сервер, создаем плейлисты и смотрим в «онлайновые» логи. Процесс конфигурирования абсолютно никаких сложностей не вызывает, поэтому здесь останавливаться не буду. Заботливые разработчики в каталоге /usr/local/movies уже приготовили для тебя по два mov и mp4 файла (в разном качестве), так что можно немедленно приступать к проверке работоспособности сервера. Запускай на клиенте либо QuickTime Player, либо RealAudio Player, вводи rtsp://ip.address.of.dss[:port]/sample_300kbit.mp4 и оценивай результат. Нельзя не упомянуть и о многоплатформенности Darwin Streaming Server. Разработчики портировали свое детище - помимо версии для Mac OS X (родная ось для него) есть версии и под Linux, на Solaris, FreeBSD и даже Windows. Потратив немного времени, мне удалось заставить его работать и на OpenBSD 3.2. Также не забывай поглядывать в bugtraq и обновлять DSS, так как в нем периодически обнаруживают различные уязвимости.

Решения от лягушатников

VideoLAN Сlient – молодой проект французских студентов, главной целью которого является трансляция потокового видео в локальных сетях. Юникастное и мультикастное вещание по протоколам UDP и RTP; видео по запросу (Video On Demand); поддержка впечатляющего числа аудио и видеоформатов; работа с тарелками, хардварными MPEG-энкодерами, web-камерами, TV-тюнера- ми и DVD; работа в режиме медиаплеера – все это умеет VLC. На данный момент существуют версии под Windows, Linux, Free/OpenBSD, Mac OS X и BeOS. Определенную сложность может вызвать инсталляция этой программы, так как, например, для полной установки на Red Hat Linux кроме стандартных средств разработки потребуется выкачать и установить около 50 (!) rpm’ок зависимостей. Если же вручную собирать из сырцов полную версию, то потребуется примерно 20 зависимостей. Но легче от этого не становится… Поэтому для тех, кто хочет получить работоспособную программу и в то же время прилично сэкономить на трафике, предлагаю вот такой способ установки: при конфигурировании отключа- ем все, чем можно пренебречь, а именно: поддержкой DVD, тарелок, исков, буфера кадров, библиотеки SDL, протокола SLP и аудиоформата OGG. При таком подходе ни одной зависимости доставлять не потребуется.

$ tar zxvf vlc-0.5.3.tar.gz $ cd vlc-0.5.3

5 Взлом 6 Юниксоид 7 Кодинг 8 Юниты 9 Quit> 71

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

P

D

 

 

<Page 072>

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

Юниксоид

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВЕЩАЕМ В СЕТИ!

Andrushock (andrushock@real.xakep.ru)

$ ./configure

--prefix=/usr/local/vlc --

disable-dvd --disable-

dvbpsi --disable-ogg --disable-vorbis --

disable-x11 --dis-

able-xvideo --disable-sdl --disable-freetype --disable-fb --

disable-gtk --

disable-wxwindows --disable-slp --disable-mad

$ make

 

 

# make install

Для того чтобы транслировать файл (в данном случае в формате MPEG1), достаточно ввести следующую команду:

# /usr/local/vlc/bin/vlc /usr/local/movies/cradle.mpg --sout udp://192.168.5.21

Чтобы транслируемый поток направить в другую подсеть, например, через 7 роутеров, нужно добавить ключ –ttl 8 (число роутеров + 1). Для зацикливания проигрываемого файла используй флажок –loop, а для вывода отладоч- ных сообщений –vvv. Теперь для приема видеоклипа на хосте с IP-адресом 192.168.5.21 открываем VLC (win32) и выбираем в меню File -> Network Stream -> UDP/RTP Port 1234.

VideoLAN Server - еще одна разработка кодеров из университета Ecole Centrale Paris. В отличие от клиентской версии, VLS не умеет принимать, декодировать и воспроизводить MPEG-потоки, зато включает в себя telnetсервер для удаленного конфигурирования и поддерживает протокол IPv6. Серверный вариант требует обязательной установки библиотеки dvbpsi:

Декомпрессия MPEG у клиента происходит следующим образом: кодек разделяет MPEG-трафик на две составляющие: аудио и видеоинформацию. Аудиоданные декодируются и через усилок попадают на динамики, а видео проходит через анализ и расшифровку фреймов, затем изображение просчитывается и выводится на экран.

$ bunzip2 < libdvbpsi-0.1.2.tar.bz2 | tar xvf - $ cd libdvbpsi-0.1.2

$ ./configure $ make

# make install

И устанавливаем сам VLS:

$ bunzip2 < vls-0.5.0.tar.bz2 | tar xvf - $ cd vls-0.5.0

$ ./configure --prefix=/usr/local/vls --disable-dvd $ make

#make install

#ldconfig

Конфигурационный файл VLS неплохо прокомментирован, поэтому для экономии места я приведу только клю- чевые разделы конфига:

# vi /etc/vls.cfg

/* Заставляем VLS подвиснуть на 9999 порт */ BEGIN "Telnet"

LocalPort = "9999" Use = "true"

END

/* Указываем абсолютный путь до транслируемого файла */

BEGIN "1"

Name = "presentation"

FileName = "/usr/local/movies/presentation.vob" Type = "Mpeg2-PS"

END

/* Определяем виртуальные каналы */ BEGIN "Channels"

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

t

 

 

ХАКЕР\¹56\Август\2003P

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

to

BUY

 

 

 

 

 

 

 

 

 

 

 

 

localhost = "network"

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

client1 = "network"

.

df

 

 

n

.c

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

-x cha

 

e

 

END

/* Описываем клиента */ BEGIN "client1"

DstHost = "192.168.5.21" DstPort = "1234"

END

Загружаем VLS:

# /usr/local/vls/bin/vlsd –f /etc/vls.cfg

Телнетимся на 9999 порт сервера, вводим пасс админа и набираем команду для транслирования презентации: admin@vls> start presentation client1 local1

Сканируем метровые диапазоны

Если твой компьютер оснащен ТВ-тюнером с поддержкой SECAM D/K, то рано или поздно у тебя возникнет резонный вопрос: можно ли смотреть телепередачи под Linux? Без проблем! И в этом ты сможешь убедиться прямо сейчас. Но для начала все же проверь, скомпилировано ли твое ядро со всеми необходимыми функциями:

Включены ли экспериментальные свойства ядра? Code maturity level options --->

[*] Prompt for development and/or incomplete code/drivers

Добавлена ли поддержка загружаемых модулей? Loadable module support --->

[*]Enable loadable module support

[*]Kernel module loader

Установлена ли поддержка интерфейса I2C? Character devices --->

I2C support ---> <M> I2C support

<M> I2C bit-banging interfaces (NEW)

<M> I2C /proc interface (NEW) /* опционально */

Присутствует ли программный интерфейс для работы с картами аудио и видеозахвата?

Multimedia devices ---> <M> Video For Linux

[*] V4L information in proc filesystem (NEW) /* опционально */

<M> BT848 Video For Linux (NEW)

Включена ли поддержка звуковых карт? Sound --->

<M> Sound card support

<M> VIA 82C686 Audio Codec (NEW) <M> TV card (bt848) mixer support (NEW)

Если чего-то не хватает, то сохраняй конфиг, перекомпилируй ядро и после перезагрузки последовательно загружай модули в следующем порядке:

#modprobe i2c-core /* поддержка I2C интерфейса */

#modprobe i2c-proc /* доступ к I2C через /proc, опционально */

#modprobe i2c-algo-bit /* поддержка I2C bit-banging интерфейса */

#modprobe tuner type=3 /* тип кодировки SECAM */ #modprobe bttv card=35 /* номер ТВ-тюнера из файла /usr/src/linux/Documentation/video4linux/bttv/CARDLIST */

#modprobe via82cxxx_audio /* моя встроенная звуковуха

*/

Также не забудь проверить наличие устройства video0:

#ls –l /dev/video0

Если получишь отрицательный ответ, то создай его с по-

 

 

1

 

2

 

3

 

4

 

72

Ньюсы

Феррум

Inside

PC_Zone

Implant

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

 

E

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

P

D

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

<PageP

073>

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

Click

 

 

 

 

 

 

 

 

m

 

 

 

able-dvbpsi --disable-ogg --disable-vorbis --disable-Clicksdl --

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

w

.

 

 

 

 

 

 

 

.c

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

 

 

 

 

h

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

-xc

a

n

e

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

Пример конфигурационного файла

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-enable-ffmpeg --with-ffmpeg-tree=/home/root/ffmpeg-cvs-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

~/.xawtv

YEAR-MONTH-DAY --enable-v4l

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ make

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[global]

# make install

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fullscreen = 640 x 480

Для группового вещания (multicast) телевизионных пере-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

freqtab = Russia

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дач воспользуемся вот такой командой:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pixsize = 128 x 96

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#/usr/local/vlc2/bin/vlc v4l:/dev/video:norm=secam:frequen-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pixcols = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cy=77.25:size=640x480:\

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

jpeg-quality = 85

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

channel=0:adev=/dev/dsp:audio=0 –sout \

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мощью скрипта MAKEDEV:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'#transcode{vcodec=mp4v,ab=256,vb=3000,vt=800000,key

 

 

 

 

 

 

 

 

 

 

 

 

 

# cd /usr/src/linux/Documentation/video4linux/bttv/

[defaults]

int=80,acodec=mpga}: \

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

# ./MAKEDEV video 0

norm = SECAM

std{access=udp,mux=ts,url=239.255.5.10}'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Настало время взглянуть на логи:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

capture = over

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

# tail /var/log/messages

Если при просмотре пропадает слишком много кадров,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

source = Television

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

либо изображение идет с низким fps, то попробуй

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

midian kernel: Linux video capture interface: v1.00

 

 

уменьшить размер картинки, а если и это не сильно по-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

midian kernel: bttv: driver version 0.7.106 loaded

 

 

могает, то отключи трансляцию аудиоданных (в этом

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

midian kernel: bttv0: detected: FlyVideo 98 (LR50)/ Chronos V

Телевидение в массы

примере идет unicast вещание):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ideo Shuttle II [card=35], PCI subsystem ID is 1851:1850

# /usr/local/vlc2/bin/vlc v4l:/dev/video:norm=secam:fre-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

midian kernel: bttv0: using: BT878(Lifeview FlyVideo 98 LR)

Чтобы осуществить эту благо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[card=35,insmod option]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

родную миссию, сначала при-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Все! Твой ТВ-тюнер готов рваться бой. Осталось лишь

дется пересобрать ffmpeg с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

аргументом --enable-shared,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

скачать и установить xawtv, имхо, самую лучшую на се-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

так как нам потребуется дина-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

годняшний день программу для просмотра телевизион-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мически слинкованный libav-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ных передач под никсами:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

codec. Следующим шагом бу-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ ./configure --enable-xfree-ext --enable-xvideo --enable-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дет получение исходного кода

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

lirc --enable-gl --enable-dv \

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

VLC из CVS-репозитория про-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

--enable-mmx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

екта (на данный момент с воз-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ make

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

можностью транслировать те-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

# make install

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лепередачи по локальной сети

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После установки программы сразу переходим к поиску

 

можно познакомиться, только

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

используя CVS-версию):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

каналов:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ scantv

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь выбираем стандарт телевизионного изображения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SECAM и страну, в которой находимся:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

scanning channel list russia...

 

 

quency=77.25:size=320x240 –sout \

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R1 ( 49.75 MHz): no station

 

 

'#transcode{vcodec=mp4v,ab=256,vb=3000,vt=800000,key

 

 

 

 

 

 

 

 

 

 

 

 

 

R2 ( 59.25 MHz): no station

 

 

int=80}:std{access=udp, \

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R3 ( 77.25 MHz): ???

 

 

mux=ts,url=192.168.5.21}'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[unknown (R3)]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

channel = R3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После первого пойманного канала нажимаем Ctrl+C, заг-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ссылки по теме:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ружаем в фоновом режиме xawtv и устанавливаем метку

$ mkdir ~/vlc_cvs

 

Проект ffmpeg: http://ffmpeg.source-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

телевизионного канала:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

forge.net/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ cd ~/vlc_cvs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ xawtv &

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проект mpeg4ip: http://mpeg4ip.source-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ cvs -d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ xawtv-remote setchannel R3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

:pserver:anonymous@anoncvs.videolan.org:/var/cvs/videolan

 

forge.net/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если ты все делал правильно, на экране должна появить-

login

 

Ïàãà xawtv: http://bytesex.org/xawtv/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ся телепередача в окне размером примерно со спичеч-

$ cvs -d

 

Все, что касается VLC, VLS и dvbpsi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ный коробок ;-). Более тонкую настройку телеканалов

:pserver:anonymous@anoncvs.videolan.org:/var/cvs/videolan

 

можно найти здесь:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

можно произвести в самой программе указательными

-qz9 checkout -P vlc

 

http://www.videolan.org/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/* следующую команду необходимо выполнять только

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

клавишами «влево»-«вправо». Переключать каналы мож-

 

http://developers.videolan.org/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для обновления VLC */

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

но с помощью стрелок «вверх»-«вниз».

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сайт, посвященный DSS: http://develop-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ cvs -d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

er.apple.com/darwin/projects/streaming/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

:pserver:anonymous@anoncvs.videolan.org:/var/cvs/videolan

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-qz9 up -Pd

 

WinAMP-плагин для поддержки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ cd vlc

 

протоколов RTP/RTSP:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ ./bootstrap

 

http://www.live.com/multikit/winamp-plu-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С помощью последних аргументов скрипта configure мы

 

gin.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Через свежемясо можно найти

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

как раз включаем в VLC поддержку ffmpeg и интерфейса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

абсолютно все: http://freshmeat.net/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

video4linux:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$ ./configure --prefix=/usr/local/vlc2 --disable-dvd --dis-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 Взлом 6 Юниксоид 7 Кодинг 8 Юниты 9 Quit> 73

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

NOW!

o

Кодинг

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

to

BUY

 

 

 

Счетчик

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

o

m

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СЧЕТЧИК ОБРАЩЕНИЙ НА РАЗ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dr.Zlobyus (zlobyus@e-mail.ru)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

«íà ðàç»

 

 

 

 

 

 

 

обращений

 

 

 

 

 

 

 

Серверное программирование

 

â Delphi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-нибудь

сайта, ты загружаешь в свой

компьютер статические

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дело обстоит

 

 

 

 

 

 

Просматривая содержимое какого

 

с первыми все понятно, то с последними

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Åñëè

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-страницы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и динамические

HTML

 

 

веб-сервера могут быть построены

на разных технологиях:

 

 

 

 

 

 

 

. Динамические

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- ýòî CGI è PHP (õîòÿ

 

 

 

 

 

 

 

 

несколько иначе

 

 

 

 

 

 

распространенные

 

 

 

 

 

 

 

 

 

CGI (Perl,

C/C++), PHP, ISAPI, ASP. Сейчас самые

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. И так уж сложилось, что CGI ассоцииру

 

 

 

 

 

 

 

PHP-скрипты

могут работать и через CGI-интерфейс)

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

ведь на этом языке написано

бесчисленное множество

супернаворо

 

 

 

 

 

 

 

 

ется именно с перлом,

 

в том числе

 

 

 

 

 

 

 

 

 

любой язык,

 

 

 

 

 

 

 

 

 

 

деле это может быть практически

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Но на самом

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

ченных

скриптов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. О последнем как раз и пойдет разговор в нашей

сегодняшней статье

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C/C++ è äàæå Delphi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-mail.ru)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dr.Zlobyus (zlobyus@e

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Протоколы программирования

 

 

 

 

 

 

 

 

 

è

CGI (Common Gateway Interface)

- это стандартный протокол связи между браузером

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

номеров Х.

 

 

 

 

 

 

 

 

 

. Подробнее о нем ты можешь узнать из предыдущих

 

 

 

 

 

 

 

 

 

 

 

 

 

веб-сервером

 

 

 

 

 

совершенно другим подходом (путем обращения

Вместо CGI можно воспользоваться

 

ISAPI (Internet Server API), разработанным

к интерфейсам API сервера), таким как

 

 

 

 

 

 

 

 

 

 

 

 

DLL, загружаемые

 

â

 

 

 

 

 

 

 

 

 

. ISAPI позволяет писать

 

 

Microsoft, è NSAPI (Netscape Server API)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Загрузив

DLL,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-то время

 

 

 

 

 

 

 

 

 

 

 

адресное пространство

сервера и сохраняемые там какое

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для обработки каждого запроса отдель-

сервер получает возможность использовать

 

 

 

 

 

(если она еще не загружена!)

. То есть сервер получает запрос, грузит DLL

ный поток

 

 

соответствующий

код, результат которого и отсылается

клиенту. А так

и выполняет

 

 

 

 

 

 

 

 

 

 

 

íà

сервере осуществляется

через память, такие при-

 

 

 

 

как служебный обмен данными

 

 

Apache

сервер тоже

быстрее, чем аналогичные CGI.

ложения работают на порядок

 

 

 

 

ñïå-

 

 

 

при помощи CGI, но он и поддерживает

позволяет расширить свои возможности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

циальные библиотеки расширения

(модули).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Êàê ýòî â Delphi

 

 

 

 

поддерживающих

разработку

Существует

множество

языков программирования,

 

èç-çà òî-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. И вовсе не обязательно изучать новый язык только

 

 

 

 

 

 

 

серверных

приложений

 

 

îí

имеет преимущество

перед тем, к которому ты уже

го, что, по мнению некоторых,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

привык, и на котором писать код тебе значительно

проще. Так что, если ты предпо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чел остальным языкам программирования

именно Delphi, этот материал для тебя.

 

 

 

 

 

 

 

 

 

 

 

 

- все они поддер-

Я не зря перечислил все виды серверного программирования

 

 

 

.

Давай

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ðàñ

живаются Delphi, и их разработка в его среде

 

приятна и несложна

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

смотрим

подробнее

 

 

 

и другие типы серверных

приложений в Дельфи мож-

Конечно, разрабатывать CGI

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

но по-разному, но я предлагаю

использовать технологию

WebBroker, поддержива

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

ющую иерархию классов VCL и CLX, что

сильно упрощает разработку веб-приложе

 

 

 

 

 

 

 

 

 

 

 

.

Самое главное, что

ний, а также специальный

тип модулей данных (WebModule)

 

 

 

Т.е. никаких из-

 

 

общим для всех типов приложений!

компонент WebModule

является

 

 

 

 

 

 

 

 

 

ÍÎ:

 

 

 

 

 

 

 

 

 

 

òû

не найдешь! Единственное

менений в коде, будь то ISAPI-, или CGI-проект,

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

если разрабатываешь проекты ISAPI, то код в разных версиях Дельфи

будет отли

 

 

 

 

 

 

 

.

чаться, а если решил писать модули

Apache, òî èõ

придется установить на сервер

 

 

modules

сервера и отредактируй

 

ôàéë

Для этого помести свой модуль в папку .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

httpd.conf - читай комментарии

 

внутри файла

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А теперь давай напишем простенькое

веб-приложение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Графический счетчик обращений

Почему я выбрал такой простой пример? Цель

моей статьи - показать возможности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Delphi, а дальше уже на твое усмотрение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Далее появит

Итак, запускай Delphi и лезь в New -> Other

-> Web Server Application

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ся диалоговое окно, в котором

òû

сможешь

выбрать тип приложения

(выбирай CGI).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Для построения приложе-

Перед тобой появилось окошко компонента

 

WebModule1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Добавь новый Action, на-

ния тебе придется редактировать

Actions этого компонента

 

.Actions.

После этого

 

 

 

 

 

 

 

 

 

 

жав на кнопку

Add new в диалоговом окне

Editing

Webmodule1

 

 

 

 

 

 

 

 

 

"Листинга счетчика".

 

создай

обработчик события OnAction и напиши туда код из

 

 

 

 

 

 

 

 

-

Поясню, мы создаем не

многофункциональное

приложение, а простой счетчик посе

 

 

 

 

 

 

 

 

 

íå íàäî; à âîò

 

 

 

 

 

 

 

 

 

компонента редактировать

щаемости, поэтому никакие другие свойства

 

 

 

 

редактирование

ïîëÿ PathInfo äëÿ êàæ-

для более сложных приложений понадобится

 

 

 

нужно.

 

 

 

 

 

 

 

 

дого нового

Action'а. Думаю, ты понимаешь, зачем это

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Только сначала отредактируй раздел uses:

А теперь давай разберемся с программой

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

uses Windows, Graphics, Jpeg, ExtCtrls,

SysUtils, Classes, HTTPApp;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

Ñàì êîä

объяснять не буду - там

все очень

 

просто. Расскажу лишь, как

это работает

 

 

â ðè-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Существует два метода

написания графических счетчиков: первый заключается

 

 

 

 

îò

0 до 9 и последующей комбинации

из них нужного

совании

картинок с цифрами

 

 

 

 

 

 

 

 

его) - рисование в памяти растровой кар-

 

 

 

 

 

 

 

 

 

 

 

числа. Второй (мы будем использовать

 

 

мы этого добьемся? Для начала создаем

тинки с выводом числа прямо на ней. Как

 

 

 

 

 

 

 

íà

 

нем используем

растровое

изображение (компонент

Image), а для рисования

 

 

 

 

 

 

 

 

 

 

это изображение к объ-

 

методы класса TCanvas. Далее мы подключаем

стандартные

 

 

jpeg. После этого

 

 

 

чтобы

получить изображение в формате

екту класса TJpegImage,

 

.

 

 

 

 

можно сохранить полученные

данные в поток и вернуть их клиенту

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

клиента к программе

Механизм же реализации

счетчика еще проще: при обращении

 

 

 

 

.

Åñëè ôàéë ñó-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-файла с числом посещений

 

 

осуществляется

проверка на наличие лог

 

единицу и перезаписывает

ôàéë; åñëè æå

 

 

 

то программа просто добавляет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Счетчик в действии

74

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

его нет, то в файл пишется

 

 

единица (так как мы все же обратились к странице один

раз). А дальше осуществляется подготовка

изображения и отправка его клиенту.

За пересылку

 

 

изображения клиенту отвечают три выражения:

Response.

 

 

 

 

 

 

 

Response.

ContentType :=

'image/jpeg'; - задает тип содержимого ответа;

 

 

 

 

 

 

ContentStream := Stream; -

присваивает поток свойству

 

ContentStream;

 

 

 

 

 

 

 

Response.

 

 

 

 

 

 

 

 

SendResponse; - отправляет ответ клиенту.

 

 

 

Теперь для

проверки

работоспособности

приложения

ты можешь

обратиться

ê

 

íåìó òàê: www.

 

 

 

 

 

 

somehost.ru/cgi-bin/Project1, или вставить в нужную

тебе страни-

цу тег <img src="путь_к_скрипту">.

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

Заключение

 

 

 

 

 

 

 

 

 

 

 

 

 

И последнее. При

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

написании серверных приложений каждый

сталкивался с проб-

 

 

 

 

 

лемой их отладки. Но у тех, кто

 

 

 

 

 

 

 

 

 

 

использует Delphi таких проблем больше не

будет:

 

 

 

 

 

начиная с 6 версии появился встроенный отладчик Web App

Debugger. Подробно

 

 

 

 

 

рассказывать о нем не

áóäó, íî

если возникнут

 

 

 

 

 

 

Вот и все. Теперь у

 

вопросы, смело присылай их

ìíå.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тебя есть начальные знания, необходимые для

написания сер-

 

 

 

 

 

верного приложения на Delphi.

 

 

 

 

 

 

 

 

Удачи!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Листинг счетчика

procedure

 

 

TWebModule1.

 

der: TObject;

WebModule1WebActionItem1Action(Sen

 

Request: TWebRequest; Response: TWebResponse;

var Handled:

Boolean);

 

var

 

 

 

Bitmap: TBitmap;

 

Hits: Integer;

 

LogFile: Text;

 

FileName: string;

 

Jpeg1: TJpegImage;

 

Stream: TMemoryStream;

 

begin

 

 

FileName :='Count.log'; //задаем

название лог-

файла

 

 

System.

 

 

try

Assign(LogFile, FileName);

 

 

 

 

if

 

 

файл существует,

FileExists(FileName) then //åñëè

òî

добавляем 1 к общему числу посещений

 

begin

 

 

 

('###,###,###', Int(Hits))); //выводим количество

Reset(LogFile);

 

 

 

Readln(LogFile, Hits);

 

 

посещений

 

 

 

Inc(Hits);

 

 

 

Jpeg1 := TJpegImage.

 

 

end

 

 

 

 

 

 

 

 

try

 

Create;

else //если нет, то пишем в файл 1

 

 

 

 

 

 

Jpeg1.

 

 

 

 

Hits := 1;

 

 

 

CompressionQuality := 50;

 

 

 

 

Jpeg1.

 

 

 

 

Rewrite(LogFile);

 

 

Assign(Bitmap);

 

 

 

 

 

Stream :=

TMemoryStream.Create; //создаем поток

Writeln(LogFile,

Hits);

 

 

 

 

Jpeg1.

finally

 

 

 

SaveToStream (Stream); //помещаем в него

Close(LogFile);

 

 

 

изображение

 

 

 

 

 

 

Stream.

 

 

 

 

end;

 

 

 

 

 

 

 

 

 

 

Position := 0;

 

 

 

 

 

 

 

Response.

 

:= 'image/jpeg';

 

 

 

 

ContentType

 

 

 

 

Response.

 

 

:=

 

Bitmap := TBitmap.Create; //создаем изображение

ContentStream

Stream;

Response.

 

 

 

try

 

 

 

SendResponse;

//отсылаем результат

Bitmap.

120;

 

 

finally

 

 

 

 

Width :=

 

 

Jpeg1.Free;

 

 

 

Bitmap.

 

 

 

 

 

 

Height := 25;

 

 

end;

 

 

 

 

Bitmap.

 

 

 

 

 

 

 

Canvas.Font.

 

 

 

 

 

 

 

Bitmap.

Name := 'Arial';

 

finally

 

 

 

 

Canvas.Font.Size := 14;

 

 

Bitmap.Free;

 

 

 

Bitmap.

 

 

 

 

 

 

Canvas.Font.Color := RGB

(255, 127,

0);

end;

 

 

 

 

Bitmap.

 

 

 

 

 

Canvas.Font.Style := [fsBold];

 

end;

 

 

 

 

Bitmap.Canvas.

 

 

 

 

 

 

 

TextOut (1, 1, 'Hits: ' + FormatFloat

 

 

 

 

 

75

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

D

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

to

BUY

NOW!

 

 

Кодинг

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

o

m

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

ПРОЦЕСС ПОШЕЛ

Николай "G" Андреев (gorlum@real.xakep.ru)ПРОЦЕСС

ПОШЕЛ! Пишем процесс-менеджер на C/C++

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

много в этом звуке... Я еще помню

времена, когда у меня

стоял Windows

95, è íà

 

 

âñå

... Êàê

 

 

 

 

сразу

вылетали

 

 

 

 

 

 

 

зависнуть одной программе, как

 

 

 

 

Процесс

 

 

 

 

 

 

. Стоило

 

 

 

 

 

-

компьютере творился

сплошной

õàîñ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

с работой, он сам порой являлся при

. Стандартный

таскменеджер не просто не справлялся

 

 

 

 

 

. Облазив

êó÷ó

 

 

 

том, как бы получить над системой больше

власти

 

 

 

форточки

 

 

 

 

î

 

 

 

 

-

. Тогда-то я и задумался

 

 

 

 

 

 

 

 

 

имеющий

 

путного, я понял, что надо писать свой менеджер,

áîëü

чиной сбоя

и не найдя ничего

 

 

 

 

ресурсов в инете

 

 

 

 

 

. И я его написал, причем

 

 

чем обычный,

и самое главное - стабильно работающий

 

 

 

 

 

.

 

ше возможностей,

âîò

как он был создан - этим я поделюсь с

тобой в этой статье

 

 

 

. À

 

 

 

 

 

 

 

пользуюсь им по сей день

 

 

 

 

 

.xakep.ru)

 

 

 

 

 

 

 

 

 

 

 

 

Николай "G" Андреев (gorlum@real

 

 

 

 

 

 

 

 

 

Мы научимся не только перечислять

и выводить на экран все запущенные

íà äàí-

"завер-

 

манипулировать ими. Научимся

ный момент процессы, но и по-разному

 

 

 

шать задачу", менять приоритет

процесса, его свойства и получать о нем любую

 

 

 

программ

. Все эти навыки могут очень пригодиться при написании

 

 

информацию

 

 

 

 

 

.

 

 

 

 

 

ïîä windows

 

 

 

 

 

öèåé

CreateToolhelp32Snapshot,

о которой я уже говорил раньше. В первом

параметре

 

 

 

 

 

говорящую о нашем желании по-

 

 

 

 

 

мы передадим ей константу TH32CS_SNAPPROCESS,

 

 

лучить снимок именно процессов, а не модулей,

нитей или чего-нибудь другого в этом

 

 

-

роде. Второй параметр нас совершенно

не интересует, поэтому передаем NULL. Функ

 

ìû

сохраним в какую-нибудь переменную

ция вернет значение типа HANDLE, которое

 

 

 

 

 

 

 

.

 

 

 

 

и будем впоследствии его использовать

 

 

 

 

Кодим

 

 

 

 

 

форму и кинем на нее объект ListBox и объект

 

ДСразу к делу. Сначала создадим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

íàì âîç-

 

Button. В листбокс запишем

âñå

текущие процессы, а кнопочка Button даст

оконную

 

 

 êîäå

 

мы создадим соответствующую

 

можность убивать эти процессы.

 

 

 

 

 

 

 

 

 

сообщения о нажатии клавиши).

 

процедуру для обработки сообщений (например,

 

 

 

 

 

 

 

 

 

 

 

-

 

Как это сделать, я не буду здесь описывать,

просто загляни

в майский выпуск тво

 

его любимого журнала :).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Способов

перечислить процессы много.

 Windows NT

 

4.0, например, доступен

 

из набора Process Status

 

 

 

 

 

 

 

 

 

 

EnumProcesses

только

один - воспользоваться функцией

 

Он также доступен и в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PSAPI).

Application Programming Interface (в простонародье

 

 

 

 

 

 

 

 

-

старших НТях, а в 9x - нет, так что, хотя

этот способ и

очень удобен, он, увы, отпа

 

 

â

 

реестре,

 

 

â

скрытом

разделе

äàåò.

 

Есть способ

порыться

 

 

 

 

 

 

 

 

 

 

 

 

 

.

Íà

 

 

 

 

_DATA, но он также отпадает из-за сложности

реализации

 

 

 

 

 

 

 

способ и дали

HKEY_PERFOMANCE

 

 

 

 

 

 

 

придумали универсальный

наше счастье, яйцеголовые из Microsoft

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ему название ToolHelp API.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.h к нашей

Для использования

этого способа подключим заголовочный

ôàéë tlhelp32

 

ê

 

 

в стандартной

поставке Platform SDK (прилагающейся

 

 

 

. Он находится

 

программе

 

 

 

 

 

 

его не найдет, посмотри на нашем диске - я его

студии),

но если вдруг компилятор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

òðè

 

 

 

 

 

. Для перечисления процессов мы будем использовать

 

 

приложил к программе

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

функции:

 

 

- для получения "снимка" процессов;

 

 

 

 

 

CreateToolhelp32Snapshot

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

из снимка;

 

 

 

 

 

Process32First - для получения первого процесса

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

Process32Next - для получения оставшихся

процессов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Получаем процессы

 

 

 

 

 

 

 

 

 

Ïðè

перечислении мы должны добавить

èìÿ

процесса в листбокс на форме и иден-

 

 

 

 

 

для того, чтобы,

связав зна-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тификатор этого процесса в массив. Это необходимо

манипулировать

 

 

.

чение

в массиве

со значением в списке, мы могли

процессом

 

 

 

на кнопку "завер-

 

определенный процесс в списке и нажать

Например, выделить

процесса.

 

 

 

 

 

 

 

 

 

ê

завершению выбранного

 

 

шить", что, по идее, должно привести

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Итак, определим переменные:

 

массив типа DWORD из, допустим, 1024 элементов

 

 

 

 

 

в которую у нас будут заноситься значения

и переменную типа PROCESSENTRY32,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

свойств и характеристик процесса.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Воспользуемся для этого функ

Создадим снимок процесса и начнем его

исследовать

 

 

 

 

 

 

 

 

 

Структура PROCESSENTRY32

 

 

 

 

 

typedef struct tagPROCESSENTRY32

{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DWORD dwSize;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DWORD cntUsage;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DWORD th32ProcessID;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ULONG_PTR th32DefaultHeapID;

 

 

 

 

 

 

 

 

 

 

 

 

DWORD th32ModuleID;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DWORD cntThreads;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DWORD th32ParentProcessID;

 

 

 

 

 

 

 

 

 

 

 

 

LONG pcPriClassBase;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DWORD dwFlags;

 

 

_PATH];

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TCHAR szExeFile[MAX

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

} PROCESSENTRY32;

 

 

*PPROCESSENTRY32;

 

 

 

 

 

 

 

typedef PROCESSENTRY32

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Получив снимок, можно

начать

перечислять

процессы

при помощи

функции

 

 

 

 

 

 

 

-

Process32First,

в первом параметре которой мы передадим

полученный HANDLE сним

 

. Далее создадим цикл

 

íà

 

 

 

 

 

 

 

 

 

 

 

ка, а во втором ссылку

переменную типа PROCESSENTRY32

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Òàì æå â öèê

do - while, его условием

является равенство нулю функции Process32Next

 

структуры,

 

 

 

DWORD значение члена th32ProcessID

нашей

ле будем заносить в массив

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. В коде это выглядит так:

увеличивать счетчик на 1 и ставить имя процесса

в листбокс

 

 

 

 

 

 

 

 

 

 

 

 

 

// process - наша структура

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.th32ProcessID;

 

 

 

 

 

 

 

 

 

idarray[i++] = process

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SendDlgItemMessage(hwnd,

IDC_LISTBOX1, LB_ADDSTRING,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.szExeFile);

 

 

 

 

 

 

 

 

 

 

 

 

0, (LPARAM)process

 

 

 

IDC_LISTBOX1, LB_SETCURSEL,

 

 

 

SendDlgItemMessage(hwnd,

 

 

0, 0)-1, 0

 

 

 

 

IDC_LISTBOX1, LB_GETCOUNT,

(WPARAM)SendDlgItemMessage(hw,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

_LISTBOX1

- идентификатор листбокса. В

где hwnd - описание нашего окна (формы), а IDC

 

 

 

 

 

 

таскменеджеру,

итоге, для того, чтобы

перечислить процессы и сообщить о них нашему

дадут доступа к

 

выполнить

этот цикл. Но системные процессы не

необходимо всего лишь

 

 

 

 

 

 

 

 

 

 

 

их, ни даже посмотреть

их имена. Как это

своим свойствам, и мы не сможем ни закрыть

 

 

 

 

 

 

 

до уровня отладчика. Звучит

исправить? Надо повысить привилегии

процесса-менеджера

 

 

 

 

 

 

 

 

 

 

 

 

76

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

сложно, но на самом деле -

ðàç

плюнуть. Я написал

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

собственных привилегий.

Запусти ее с

небольшую

функцию для изменения

 

 

 

 

to

 

 

 

 

 

false - ты его, соответственно,

 

параметром true, и получишь уровень

отладчика, с

w

 

 

 

 

 

 

 

лишишься

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

w Click

 

 

 

 

 

o

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

Листинг функции,

дающей привилегии

отладчика

нашей

программе

void EnableDebugPrivilege(bool fEnable){

 

HANDLE hToken;

 

 

 

if

 

 

 

(OpenProcessToken(GetCurrentProcess(),

&hToken)){

 

TOKEN_ADJUST_PRIVILEGES,

 

TOKEN_PRIVILEGES tp;

 

 

tp.PrivilegeCount = 1;

 

 

LookupPrivilegeValue(NULL,

 

 

tp.Privileges[0].

SE_DEBUG_NAME, &tp.Privileges[0].Luid);

 

Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;

 

 

 

AdjustTokenPrivileges(hToken,

 

CloseHandle(hToken);

false, &tp, sizeof(tp), NULL, NULL);

}

 

 

 

 

}

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ИГРЫ ПО КАТАЛОГАМto

 

 

 

 

w Click

 

BUY

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

С ДОСТАВКОЙ НА ДОМdf-x chan

 

o

 

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

БЫСТРО УДОБНО ДОСТУПНО

PC Accessories

 

Убиваем процессы

 

 

 

 

 

 

 

 

 

 

Хорошо, какие процессы есть в системе -

 

 

 

 

 

 

 

 

 

 

нам нужно получить хэндл процесса.

мы знаем, но как ими манипулировать? Для этого

 

Только

получив его, можно с ним что-нибудь сотворить.

 

Делается это

ñ

помощью функции

 

OpenProcess, передав которой

параметры

 

PROCESS_ALL_

 

 

 

 

 

 

 

 

 

ACCESS, false è

идентификатор процесса (из массива), получим

дескриптор.

Поскольку мы пишем

 

 

менеджер

процессов, то первое,

 

 

 

убивать (завершать).

 

 

 

что он должен уметь - эти процессы

Завершить их

совсем

íå

сложно. Достаточно запустить функцию

TerminateProcess ñ

 

 

 

 

 

 

 

параметрами: хэндл процесса

è êîä

завершения (я пишу 0). Функция за-

вершит

процесс, а

так как привилегии у нас высокие, то

 

 

убиваемый процесс умрет без лиш-

íèõ ñëîâ.

 

 

 

 

 

 

 

 

 

 

После того, как ты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

завершил работу с дескриптором процесса или любым другим

хэндлом,

стоит его закрыть с помощью функции CloseHandle.

 

 

 

 

Практика убийства процесса проста так

же, как и теория. В

нашей

программе массив идентифи-

каторов процессов и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

список связаны, так что при нажатии на кнопку завершения

процесса необ-

ходимо будет вычислить номер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выделенного в списке элемента и уже с ним работать. В

итоге

код завершения получился довольно компактный:

 

 

 

 

 

 

 

//

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вычисляем индекс выделенного элемента

 

 

 

 

 

 

 

int index = SendDlgItemMessage(hwnd, IDC_

 

 

 

 

 

 

 

//

 

 

 

 

 

 

 

 

 

 

LISTBOX1, LB_

 

0);

 

открываем процесс из массива с этим индексом

GETCOUNT, 0,

 

HANDLE hProcess = OpenProcess (PROCESS_ALL_

 

 

 

 

 

 

// убиваем его

 

 

 

 

 

 

 

 

 

ACCESS, false, idarray[index]);

TerminateProcess(hProcess, 0);

 

 

 

 

 

 

 

 

 

 

//

закрываем хэндл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CloseHandle(hProcess);

 

 

 

 

 

 

 

 

 

 

 

 

 

$32.99

$179.99

$73.99

 

Клавиатура/ Microsoft

 

 

Wireless Optical Desktop

 

Наушники/

Pro, Keyboard-Mouse Combo

Джойстик/ 2.4GHz

 

Nady QH-460

 

Logitech Cordless

 

 

Controller

$779.99

$209.99

$209.99

Во что может

 

 

 

 

 

 

 

 

 

 

 

 

 

 

превратиться обыкновенный таскменеджер

 

Break

 

 

 

 

 

 

 

 

 

 

 

 

Òàê óæ

 

 

 

 

стандартные

 

 

 

 

всегда

вышло, что я терпеть не могу

системные утилиты Windows и

самую

стараюсь написать свои. Так получилось и с процесс-

менеджером.

Я описал

примитивную

программу

для манипулирования

 

твоего

процессами, так

÷òî äëÿ

творчества остается

уйма места. Например,

 

listview

и добавить

ê

 

ты можешь заменить

listbox íà

именам

процессов

èõ

иконки или, например,

 

 

 

 

 

 

создать

возможность изменения приоритетов процесса с

помощью функции SetPriorityClass.

Åñëè

возникли какие-нибудь вопросы,

èäåè

 

 

èëè

замечания - пиши. Постараюсь

ответить. Проект для

Visual Studio

.NET,

 

 

 

 

 

 

полный исходный текст

 

программы с подробными

комментариями

è

óæå

скомпилированный

 

exe'øíèê òû

 

 

 

 

 

можешь взять на диске или скачать с сайта www.xakep.ru.

 

На этом все. Удачного компилирования.

 

 

 

 

 

 

 

 

Джойстик/ Flight

Педали/CH Pro

Джойстик/ CH Flight

Control System III

Pedals USB

Sim Yoke USB

(AFCS III)

 

 

Заказы по интернету – круглосуточно! e-mail: sales@e-shop.ru

Заказы по телефону можно сделать ñс 10.00 до 21.00 с понедельника по пятницу

с 10.00 до 19.00 с субботы по воскресенье

СУПЕРПРЕДЛОЖЕНИЕ ДЛЯ ИНОГОРОДНИХ ПОКУПАТЕЛЕЙ:

стоимость доставки снижена на 10%!

(095) 928-6089 (095) 928-0360 (095) 928-3574

#8(56)

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

to

BUY

NOW!

 

 

 

Кодинг

 

 

 

PHP:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

o

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PHP: ТОРГУЙ СМЕЛО!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Никита Кислицин (nikitoz@real.xakep.ru)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

торгуй смело!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Тогда я

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-торговли

 

 

 

 

 

 

 

 

Â

прошлом выпуске мы приступили

к написанию собственной системы

интернет

 

о реализации

 

 

 

 

 

 

 

 

 

 

части проекта, сегодня же речь пойдет

 

 

 

 

 

 

 

 

 

 

 

 

 

пользовательской

ìû óæå íå ðàç

 

 

 

 

 

 

 

 

 

 

рассказывал о создании

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. А чтобы не повторяться (похожие задачи

 

 

 

 

 

 

 

 

 

 

 

административного интерфейса

системы

затрагиваемой

до сих пор технологии

web-сессий; также

 

 

 

 

 

 

решали), существенное

внимание я уделю не

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

настройки интерпретатора

PHP и веб-сервера Apache

 

 

 

 

 

 

 

 

 

 

 

 

 

речь пойдет о проблемах оптимальной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.inc.ru

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.xakep.ru) http://nikitos

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

_ion" Кислицин (nikitoz@real

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Никита "red

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Что такое сессия?

 

 

 

 

же сессий в

 

Что такое сессия, ты, я полагаю,

знаешь не понаслышке :). Технология

 

 

 

èäåÿ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Основная

 

 

-программирования - вещь значительно более приятная

 

 

 

 

 

 

рамках web

 

 

в том, что программисту предоставляется

возможность сохранять

 

здесь заключается

 

 

 

пространстве, дос-

 

 

 

данные на сервере в некотором адресном

 

какие-то управляющие

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

при помощи специального длинного

 

туп к которому

однозначно идентифицируется

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ключа - так называемого идентификатора

сессии (session id). Таким образом, сессия

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

èí-

 

- это набор информации, хранящейся

на сервере, доступ к которой имеет лишь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

терпретатор PHP, пользователю же совсем не обязательно

об этом знать

 

 

-

 

 

 

 

 

 

 

 

 

 

 

Для чего все это нужно? Причин, побудивших

создателей PHP включить в язык под

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

. Во-первых, абсолютно все web-разработчики сталкивают

 

держку сессий, несколько

 

 

 

в рамках одного сеанса. Так, например,

íåêî-

 

ñÿ

с проблемой передачи переменных

 

 

 

 

 

 

 

 

 

кукисов, которые при каждом обра-

 

 

вешают пользователю множество

торые кодеры

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-сюда. Некоторые передают нужные данные посред-

щении к серверу гоняются туда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Оба варианта на ред-

ством GET и POST-запросов (мы до сих

пор делали именно так)

 

 

 

 

 

 

 

 

да и попросту глупы (здесь нельзя полностью

кость наивны, неудобны, небезопасны,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-запро-

согласиться

ñ

автором - очень многие программисты

используют GET и POST

 

 

 

 

 

 

åñëè

юзер пользуется для

 

 

 

 

 

 

 

 

 

 

 

. Так, например,

сы для передачи параметров

- ïðèì. ðåä.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Ñîîò-

доступа в интернет локальной сетью, все пакеты могут

быть легко отснифаны

 

-

ветственно,

и его парольчики, plain-text'ом летящие от

роутера к роутеру,

будут у зло

 

 

 

 

 

 

 

 

 

 

а шлюзом в

 

как на ладони (опять же, если сетка

построена на свитчах,

умышленника

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

что пакеты с паролями будут перехвачены

инет является роутер, маловероятно,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

что данные не фаль-

 

 

. Кроме того, никто не даст стопроцентной гарантии,

 

 

 

 

 

 

 

ïðèì. ðåä.)

 

 

 

 

 

.

Поэтому нам приходилось после каждого запроса

сифицированы пользователем

 

 

 

 

 

данные на достоверность

- âåäü îí, íàï-

пользователя

заново проверять полученные

 

 

права-

 

 

 

 

 

 

 

 

и получить доступ к системе с чужими

ример, мог поменять логин на чужой,

 

 

 

 

 

проблем, создавало ненужную в серьезных

ми. Это, помимо

чисто программистских

ðàç

составляли запрос, напрягали SQL-сер-

задачах нагрузку на сервер - мы каждый

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вер, а потом

уже парсили результат sql-запроса

 

 

 

 

 

 

â

правильности

введен-

 

 

достаточно лишь один раз

удостовериться

Все это лишнее,

 

пользователя,

которо-

 

 

в пространстве сессии идентификатор

ных данных, разместить

 

 

è ê

ýòèì

данным

 

 

 

 

 

 

 

говоря, злоумышленник

му можно уже на 99.999% доверять (честно

 

 

. Âåäü ëþ-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

может получить

доступ, но это уже проблема системного

администратора)

 

 

 

 

 

 

 

а доступ

к ней осуще-

 

переменная криптуется стойким алгоритмом,

 

 

бая сохраняемая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

который очень сложно :).

 

 

 

ствляется с помощью 128-битного ключа, подобрать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Êàê

ñ

ними работать?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

выполняется при помощи процедуры

session_register ("var_name1", .., "var_name2")

 

принимает

_имена_

идентификаторов,

ïîý-

Обращаю внимание, что эта процедура

 

 

 

 

 

$.

 

 

 

 

 

 

 

 

 

 

 

 

 

тому они должны указываться без

символа

 

 

 

 

можно выполнять

любые

 

 

 

 

 

 

После того, как перемененные

зарегистрированы,

 

 

 

 

 

 

 

 

 

присваивания - данные сохранятся на сервере

и будут доступны при следующих

 

 

 

 

 

 

 

 

 

 

 

 

вызовах сценария.

 

 

 

 

 

 

 

 

 

 

 

пхп - конфигурации параметров

ðà-

Сейчас самое время рассказать о настройках

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Их довольно много, имеет смысл выделить несколько:

 

 

 

боты с сессиями

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

_globals

 

 

 

 

 

 

 

 

 

 

 

сессии осуществляется напрямую по

1) register

 

 

 

 

 

переменным

Если он включен, то обращение к

 

 

 

 

 

ассоциативный

массив

их имени, если же выключен,

то следует

использовать

 

 

 

 

 

 

 

 

 

 

 

 

.

 

_VARS, используя в качестве ключа имя требуемой переменной

 

$HTTP_SESSION

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.save_path

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

2) session

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь указывается путь к папке, в которой

будут храниться временные файлы сессий

 

 

 

 

 

 

иметь в виду, что она, скорее

Эту папку следует помещать на шустром

винчестере и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

всего, превратится в помойку и будет полна

мелких файлов странного содержания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.use_cookies

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

3) session

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Этот параметр

определяет, надо ли использовать

выпечку для хранения идентифи

 

 

 

в "1", то будут автома-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Если значение этого параметра установлено

 

id следует переда-

катора сессии

 

 

кукисы, если

же тут стоит ноль, то session

тически применяться

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

вать иным способом, например, GET-запросом

 

 

 

 

 

 

 

 

 

 

 

.auto_start

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

при каждом

4) session

 

 

 

 

следует ли создавать сессии автоматически

Этот параметр определяет,

 

 

 

 

 

 

 

.

Если тут стоит единица, отпадает всякая необходимость

вызове интерпретатора

 

_start, в противном случае это придется проделывать

использовать функцию session

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

с каждым новым юзером

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.cookie_lifetime

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

5) session

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Данные в секундах,

отражающие время жизни идентифицирующих

сессию кукисов

 

будет сохра-

 

 

 

 

 

 

 

 

 

 

 

 

 

- в этом случае

сессия

Можно установить этот параметр равным нулю

 

 

 

 

 

значение явно зада-

няться до тех пор, пока пользователь

не закроет окно. Если же

 

 

 

 

 

будет уничтожен браузером, а сессия

но, то по истечении указанного срока cookie

 

 

 

 

 

 

 

 

 

 

 

 

будет считаться закрытой.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

КодингЪ

 

 

интерфейс на сесси-

Теория кончилась, теперь давай напишем

административный

 

ряд необходимых функций, взаимо-

ях. Первым делом, как всегда, следует описать

 

 

íî-

. Такие задачи мы решали во многих предыдущих

 

действующих с базой данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Полноценная поддержка сессий стала

возможной только с пере

 

 

 

 

 

-

ходом PHP на ядро Zend (полностью

реализовано в PHP четвер

 

 

 

 

 

сессий

 

. В старых версиях интерпретатора поддержка

той версии)

 

 

 

 

 

 

 

библиотек (например, зна-

включалась посредством стандартных

менитой PHP Lib. или Prometheus

Pr.). Но я настоятельно советую

 

 

 

 

 

 

ïîêà íå

-

тебе обновиться до версии 4.3.2, ибо дырок там

найде

íî :).

 

сразу после вызова процедуры

session_start.

Сессия порождается

 

 

 

 

 

список переменных в

сессии

Далее требуется зарегистрировать

 

 

поскольку большой

объем

- òóò íå

надо особо усердствовать,

сессии,

отрицательно ска-

данных,

сохраненный в пространстве

 

 

 

 

 

 

жется на производительности

сценария. Обычно достаточно за-

 

 

Регистрация

идентификаторов

писать одну недлинную

строку.

 

 

 

 

 

 

 

 

 

 

 

 

Результат ошибочного сценария. Система не смогла повесить плюшку

78

Соседние файлы в папке журнал хакер