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
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ok du hast natürlich recht sorry dafür, ich mach da erstmal weiter bis ich eine konkrete Frage habe