Источник-сервер (для нашей задачи взаимодействие “источник-сервер” можно пропустить)
Чтобы сервер мог связываться с клиентом, ему нужен источник. Когда соединение с источником установлено, сервер будет передавать данные клиентам, когда они будут подключаться.
Диалог происходит так (рассмотрим на примере Shoutcast, далее при подробном рассмотрении установления соединения будут описаны особенности и Shoutcast, и Icecast):
1. Источник создает соединение с портом сервера (служебным)
2. Затем источник посылает пароль:
password\r\n
3. Если пароль правильный, сервер посылает в ответ:
OK2\r\n
icy-caps:11\r\n\r\n
что информирует источник о том, что сервер авторизовал dsp-модуль в качестве источника и готов принимать данные. Если пароль неправильный, сервер отправит в ответ неправильный пароль:
password\r\n
4. Если источник получает в ответ OK2, он начинает посылать информацию о потоке серверу. Как правило, в форме:
icy-name:Unnamed
Server\r\n
icy-genre:Unknown
Genre\r\n
icy-pub:1\r\n
icy-br:56\r\n icy-url:http://www.shoutcast.com\r\n
icy-irc:%23shoutcast\r\n
icy-icq:0\r\n icy-aim:N%2FA\r\n
\r\n
Здесь для передачи информации и потоке используются заголовки:
* icy-name – название станции
* icy-genre – музыкальный жанр станции
* icy-pub - указывает допускает ли сервер публикацию себя в публичной директории (1 – да, 0 -нет)
* icy-br – битрейт потока
* icy-url - homepage потока
* icy-irc, icy-icq, icy-aim – контактная информация для публикации в публичной директории
5. Затем источник начинает отправлять mp3-поток.