![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
dmitryperets |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 23.12.2005 Репутация: нет Всего: нет |
Добрый день,
Есть такой проект (для ВУЗа): виртуальный сервер для предоставления услуги потокового аудио. Т.е. имеется единый IP, к которому подключается клиент и выбирает песню. Далее центральный сервер ("мост") переводит клиента на один из нескольких серверов, которые непосредственно обеспечивают потоковое аудио клиенту. Выбор сервера осуществляется "мостом" в соответствии с нагрузкой или любым другим алгоритмом (например, Round Robin). Теперь проблема... Необходимо обеспечить следующую функциональность. В случае, если в процессе получения клиентом потока с некого сервера, этот сервер вдруг падает, "мост" обязан тут же перевести клиента на другой сервер и продолжить поток оттуда. Клиент при этом ничего не должен почувствовать. На сегодняшний день мы реализовали виртуальный сервер без поддержки этой "миграции". Всё очень просто: ASP.NET + C# + SQL + Windows Media Player. Но вот теперь нужно делать эту "миграцию". Может кто-то когда-то сталкивался с чем-то подобным? Помогите линком, идеей, чем угодно! Может стоит взять какой-то open source плеер и переделать его? Или ещё как? Любой самый маленький совет поможет! Система не должна быть идеальной, но она должна работать. Спасибо. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 2 Всего: 232 |
А что тут такого сложного? C#-клиент работает по следующему алгоритму:
1) соединяемся с центральным сервером и просим у него IP свободного download-сервера 2) соединяемся с download-сервером и начинаем скачивание данных с начала требуемого файла 3) при ошибке (когда клиент словил сетевой exception) снова соединяемся с центральным сервером и по новой просим IP свободного download-сервера, затем переходим к пункту 2, только качаем не с начала файла а с прерванной позиции Это всё, конечно, если клиент - приложение написанное нами (например на C#), а не "голый" Windows Media Player. -------------------- ![]() |
|||
|
||||
dmitryperets |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 23.12.2005 Репутация: нет Всего: нет |
Клиент можно написать. Но беда в том, что этот клиент должен потом ведь вызвать Windows Media Player. Как передать ему поток? И ещё вопрос: а сетевой exception мы должны кидать? Или при проблеме со связью будет какой-то стандартный? |
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 2 Всего: 232 |
Самый простой способ - сохранить весь файл на диск и вызывать плеер через командную строку. Более сложный способ - интегрировать плеер в своё приложение, тогда возможно (не уверен) есть способ воспроизводить видео/аудио "на лету" по мере скачивания потока.
Все исключения генерируются системой, автоматически. К примеру, если юзаем TcpClient в паре с NetworkStream, то у нас будут возникать исключения SocketException (при неудачном соединении, например), ObjectDisposedException (если сокет был преждевременно закрыт, а мы пытаемся читать из потока), IOException (если поток был закрыт, а мы читаем из него), кроме того у NetworkStream есть св-во CanRead, показывающее, можно ли читать из потока. Всё это описано в MSDN, простр-во имён System.Net.Sockets. -------------------- ![]() |
||||
|
|||||
dmitryperets |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 23.12.2005 Репутация: нет Всего: нет |
Спасибо. А как лучше организовать стриминг? У нас пока обычный Web Streaming, но с ним будет проблема - тэги *.asx, пускающие поток не с начала, не будут работать...
Это сообщение отредактировал(а) dmitryperets - 25.12.2005, 18:37 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |