Раньше я ничего не делал с HttpListener
, поэтому я подумал, что это будет хорошее маленькое упражнение, чтобы быстро освоиться с ним - и это доказало. Я реализовал его как отдельный класс ProxyListener
, конструктор которого принимает параметры указанной вами функции ProxyUri
. Получив экземпляр, вы запускаете его прослушивание (и, возможно, загрузку), вызывая его метод Start
. Когда вы закончите с этим, позвоните Cleanup
.
Есть один или два грубых края, но в основном это работает согласно вашему вопросу. Чтобы проверить это, я создал его как консольное приложение с классом Program
, который принимает входные строки, состоящие из (uri, port, filename), разделенных пробелами, создает экземпляры ProxyListener
и запускает их. Вы можете запустить это консольное приложение, ввести подходящую строку, и загрузчик запустится (распечатка хода выполнения на консоль). Одновременно вы можете, например, запустите IE и загрузите файл с указанного порта, и вы сможете загрузить его, пока загрузчик все еще работает. Ход «загрузки» также будет выводиться на консоль.
У меня возникли некоторые проблемы с вставкой этого кода сюда, возможно, из-за размера (он не такой большой, но больше, чем фрагменты, которые вы обычно видите здесь - класс ProxyListener
немного меньше 200 строк). Звучит интересно? Если это так, я отправлю его на страницу и добавлю ссылку.
Обновление: Опубликовано как gist .
Обратите внимание, что для запуска программы вам потребуются права администратора, поскольку HttpListener
требует этого.
Обновление 2: При определенных обстоятельствах необязательно иметь права администратора для запуска HttpListener
. См. эту ссылку и эту . Идея состоит в том, что если вы можете зарезервировать пространство имен URL во время установки, то пользователю не нужно иметь права администратора, если он прослушивает это пространство имен.