2014-10-02 3 views
0

У меня есть следующий метод HTTP-прослушивателя, сильно вдохновленный примером использования MSDN класса HttpListener. Я довольно новичок в программировании, и я не уверен, куда идти отсюда, чтобы инициализировать его из моего Main(). Какие-либо предложения?Использование HttpListener

public static void HttpListener(string[] prefixes) 
    { 
     if (prefixes == null || prefixes.Length == 0) 
      throw new ArgumentException("Prefixes needed"); 

     HttpListener listener = new HttpListener(); 

     foreach (string s in prefixes) 
     { 
      listener.Prefixes.Add(s); 
     } 
     listener.Start(); 
     Console.WriteLine("Listening.."); 

     HttpListenerContext context = listener.GetContext(); 
     HttpListenerRequest request = context.Request; 
     HttpListenerResponse response = context.Response; 

     string responseString = "<HTML><BODY> Test </BODY></HTML>"; 
     byte[] buffer = Encoding.UTF8.GetBytes(responseString); 

     response.ContentLength64 = buffer.Length; 
     Stream output = response.OutputStream; 
     output.Write(buffer, 0, buffer.Length); 

     output.Close(); 
     listener.Stop(); 
    } 
+0

Пожалуйста, объясните, где вы _want_ идти отсюда. –

+0

Моя цель - запустить этот прослушиватель, а затем использовать веб-браузер для создания HTTP-запроса, такого как «http: // localhost /», или если это другая машина в моей сети, а затем IP-адрес моей машины. Затем он должен ответить простой HTML-страницей. – Khaine775

+0

Вы должны называть 'HttpListener (новая строка [] {" http: // *: 80/"});' из вашего метода 'Main()', чтобы указать, что вы хотите обрабатывать трафик на порт 80 (по умолчанию http port). –

ответ

3

Вы, кажется, сняли комментарии, которые указаны на странице MSDN HttpListener Class:

// URI префиксы необходимы, например, "http://contoso.com:8080/index/".

Так просто называют это так:

public static void Main(string[] args) 
{ 
    HttpListener(new[] { "http://localhost/" }); 
} 

Но обратите внимание, что этот пример будет обрабатывать только один запрос, а затем выйти. Если последующий вопрос следующий: «Как я могу обработать несколько запросов?», см. Handling multiple requests with C# HttpListener.

0

вы можете сделать что-то вроде этого:

public void ListenTraces() 
    { 
     httpListener.Prefixes.Add(PORT_HOST); 
     try 
     { 
      httpListener.Start(); 
     } 
     catch (HttpListenerException hlex) 
     { 
      log.Warn("Can't start the agent to listen transaction" + hlex); 
      return; 
     } 
     log.Info("Now ready to receive traces..."); 
     while (true) 
     { 
      var context = httpListener.GetContext(); // get te context 

      log.Info("New trace connexion incoming"); 
      Console.WriteLine(context.SomethingYouWant); 
     } 
    } 
Смежные вопросы