Обработка нескольких запросов с помощью C# HttpListenerC#

Место общения программистов C#
Ответить
Anonymous
 Обработка нескольких запросов с помощью C# HttpListener

Сообщение Anonymous »

У меня есть служба .NET Windows, которая создает поток, который по сути действует как HttpListener. Это отлично работает в примере синхронного режима...

Код: Выделить всё

private void CreateLListener()
{
HttpListenerContext context = null;
HttpListener listener = new HttpListener();
bool listen = true;

while(listen)
{
try
{
context = listener.GetContext();
}
catch (...)
{
listen = false;
}
// process request and make response
}
}
Проблема, с которой я сейчас столкнулся, заключается в том, что мне нужно, чтобы это работало с несколькими запросами и отвечало на них одновременно или, по крайней мере, перекрывающимся образом.

Для дальнейшего объяснения: клиент представляет собой приложение медиаплеера, которое начинается с запроса медиафайла со свойством заголовка запроса Range bytes=0-. Насколько я могу судить, он делает это, чтобы определить, что такое медиаконтейнер.

После того, как он прочитал «фрагмент» (или если он прочитал достаточно, чтобы определить тип мультимедиа), он затем делает еще один запрос (от другого номера клиентского сокета) с Range bytes=X-Y. В этом случае Y — это Content-Length, возвращенная в первом ответе, а X — на 250 000 байт меньше этого значения (обнаружено с помощью IIS в качестве теста). На этом этапе он получает последний «кусок», чтобы проверить, может ли он получить метку времени мультимедиа для измерения длины.

Прочитав это, он делает еще один запрос с Range bytes=0- (из другого номера сокета), чтобы правильно начать потоковую передачу медиафайла.

Однако в любой момент, если пользователь клиента выполняет операцию «пропуска», он затем отправляет другой запрос (из другого номера сокета). с Range bytes=Z-, где Z — позиция перехода в медиафайле.

Я не очень хорошо разбираюсь в HTTP-вещах, но, насколько я могу судить, мне нужно использовать несколько потоков для обработки каждого запроса/ответа, позволяя при этом исходному HttpListener вернуться к прослушиванию. Я много искал, но не смог найти подходящую модель.

РЕДАКТИРОВАНИЕ:

Признание и благодарность Рику Стралу за следующий пример, который мне удалось адаптировать в соответствии со своими потребностями...

Добавьте веб-сервер в свое приложение .NET 2.0 с помощью нескольких строк кода

Подробнее здесь: https://stackoverflow.com/questions/903 ... tplistener
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»