Laden...

HttpListener ist nur von Localhost erreichbar

Erstellt von simon666 vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.699 Views
S
simon666 Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren
HttpListener ist nur von Localhost erreichbar

Hallo alle zusammen 😄

Ich bin blutiger C# Anfänger habe bis jetzt bloß etwas java programmiert.
ich muss ein Programm schreiben das auf einem Server läuft und auf einen Port lauschen soll, auf diesem Port kommt dann ein POST rein, der so etwa aussieht.


POST / HTTP/1.1
Accept: application/xml, text/plain, text/html
Accept-Charset: utf-8
User-Agent: sipgate.io
X-SIPGATE-JOBS: http://www.sipgate.de/jobs
Content-Length: 168
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip,deflate
Host: 241.59.231.100:3000
Via: 1.1 localhost (squid/3.1.20)
X-Forwarded-For: 212.9.44.139
Cache-Control: max-age=259200
Connection: keep-alive

und das ist der Text den der POST enthält


event=newCall&direction=in&from=491632943346&to=4945141674929&callId=53766B150B0
C0D3A5D524759515A785E55535350515B545F7C50505345514155454640545A57&user%5B%5D=Emil+Edu
Disconnected from 217.216.118.254

Ich weiß das ich dazu http.listener und die http.sys verwendetn soll (hat das mein Betreuer gesagt in der Uni)

Das habe ich bis jetzt aber ich hab keine Ahnung ob ich in die richtige Richtung gehe.


class program
{

    private static HttpListener _listener;

    static void Main(string[] args)
    {
        // HTTP listener initialisieren
        _listener = new HttpListener();
        _listener.Prefixes.Add(String.Format("http://*:{0}{1}",
          3001));

        // listener starten
        _listener.Start();

        // auf eingehende requests warten
        // BeginGetContext benutzt dafür ein ThreadPool thread
        _listener.BeginGetContext(new
          AsyncCallback(ContextReceivedCallback), null);

        // server beenden
        Console.ReadLine();
    }

    private static void ContextReceivedCallback(IAsyncResult asyncResult)
    {
        HttpListenerContext context;

        // HttpListenerContext abholen
        context = _listener.EndGetContext(asyncResult);

        // neuen thread für eingehende requests starten
        _listener.BeginGetContext(new
          AsyncCallback(ContextReceivedCallback), null);

        Console.WriteLine("Request für: {0}",
          context.Request.Url.LocalPath);

        // request verarbeiten
    }
}

Ich wäre euch für Ratschläge und Tipps sehr dankbar 😄

Mit besten Grüßen

16.842 Beiträge seit 2008
vor 6 Jahren

Ich seh jetzt leider keine wirkliche Frage... aber der HttpListener verwendet im Hintergrund http.sys, ja.

Dazu gibt es ja Millionen von Snippets im Netz - und eine ausführliche Dokumentation.
Aber ja, natürlich kann man so beginnen. Sehe aber wie gesagt keine konkrete Frage.

Du hättest auch einfach nur

static void Main(string[] args)
    {
    }

schreiben können und man kann genauso drauf antworten: ja, die Richtung stimmt.

S
simon666 Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren

Ok du hast natürlich recht sorry dafür, ich mach da erstmal weiter bis ich eine konkrete Frage habe