iOS Development – Der Einstieg

Die letzten zwei Abende hab ich mich intensiv mit dem Thema iOS Entwicklung beschäftigt. Mein erstes Projekt war in XCode schnell erstellt und ich konnte den generierte Code begutachten.
Ich hab mich für Objekt-C als Sprache entschieden und war ehrlich gesagt total überfordert. *irgendwas -funtionirgendwas +funktiinwasanderes und und und Wtf

Ich hab den Quellcode wieder geschlossen und mich dem optischen Dingen hingegeben … Kann ja nicht so schwer sein .. denkst
Ich hab dann abgebrochen selbst im Editor und mich der Online Schulung’splattform YouTube zugesendet. Am ersten Abend hab ich mir 4 Stunden Videos zum erstellen von Oberflächen in iOS angeschaut und am nächsten Abend 5 Stunden Videos über Objekt-C

Heute Nacht wird das gesamte wissen aus 9 Stunden YouTube Videos in meine erste iOS App einfließen.

Die Sprache Ansicht finde ich persönlich als Herausforderung da sie so anders ist.. normal schreib ich eine Klasse initialisirre sie und arbeite damit. In Object-c macht man das auch .. nur indirekt. Man teilt im Code mit, mit welchem Objekt im Speicher man gerne arbeiten möchte und schickt dorthin die Anweisung. Interne Magie macht dann den Aufruf auf dem Objekt und gibt einem das Ergebnis.
Vermutlich ist das ganze für C Experten etwas einfacher aber als Java und C# Entwickler doch eine ganz andere Welt.

Aber okay ich Kenn jetzt die Grundlagen weiß das ich mit Pointer auf die Objekte zugreifen.

Bin auf heute Nacht gespannt. Ihr findet mich wie immer in livecoding.TV/Onko channel

Der C# HTTPListener

Hallo Zusammen,

die letzten Tage war ich damit beschäftigt einen kleinen Webserver aufzusetzen der Aufrufe verarbeitet und ein XML Dokument zurück sendet.
Ziel des ganzen war der Zugriff auf Transponder über eine Web – Applikation.
Ich habe mir einige Beispiel angesehen und mir auf msdn die entsprechenden Dokumentationen dazu angeschaut. http://msdn.microsoft.com/de-de/library/system.net.httplistener.aspx
Um der Googlenden Bevölkerung nun das finden nach Lösungen etwas zu vereinfachen werde ich hier nun meine Erkenntnisse verfassen und diese auch noch einmal für mich zu vertiefen.
Die .NET Klassenbibliothek verfügt über die Klasse HTTPListener im Namespace System.Net .
Diese kann Synchron und Asynchron „lauschen“ und auf Zugriffe reagieren. Sehr von Vorteil ist es zudem das sich das Objekt beim asynchronen lauschen, um die Kinder Threads kümmert.
Nun zur eigentlichen Arbeit.

HttpListener Listener;Listener =new HttpListener();

Mit diesem Aufruf erstellen wir uns das Listener Objekt.
Diesem teilen wir nun mit auf was er lauschen soll:

Listener.Prefixes.Add(„http://+:9090/“);

Das Prefix ist die die Adresse auf die der Listener reagieren soll. Der Prefix http://+:9090/ bedeutet das der Listener auf alles reagieren soll was über Port 9090 kommt. Wichtig ist das der Prefix immer mit / endet. Ein weitere Möglicher Prefix wäre zum Beispiel: http://www.deineDomein.com:8080/Daten/
Damit hätten wir schon mal den Listener der nun alles auf Port 9090 verarbeitet. Jetzt muss dieser nur noch gestartet werden.

Listener.Start();

Nun fehlt noch die Das abfangen der Anfragen und dessen Verarbeitung, daher wird nun der Aufruf benötigt um die Anfragen auszulesen.
Asynchron:
Listener.BeginGetContext(new AsyncCallback(ListenerCallback), Listener);
Der Methode BeginGetContext wird zum einen ein CallBack mitgegeben und zum anderen das Listener Objekt. In diesem Beispiel soll der Listener bei Eingang einer Anfrage die Methode meiner Webserver Klasse aufrufen: ListenerCallback diese ist Teil der Klasse die den Listener verarbeitet und so im gleichen Namespace.

<code>

private void ListenerCallback(IAsyncResult Result) {

HttpListenerContext Context;

try {

Context = Listener.EndGetContext(Result);

RequestInput = Context.Request.ToString();

this.ProcessRequest(Context);

} catch (HttpListenerException eR) {

System.Diagnostics.Debug.WriteLine(eR.ToString());

} try {

Listener.BeginGetContext(new AsyncCallback(ListenerCallback), Listener);

} catch (InvalidOperationException eR) {

System.Diagnostics.Debug.WriteLine(eR.ToString());

}

}

</code>

Wie wir hier sehen ruft ListenerCallback eine weitere interne KlassenMethode auf. this.ProcessRequest()
In dieser Methode wird die Antwort des Aufrufs erzeugt und zurück gesendet.
Da wir der Methode den Context des HTTPListeners übergeben haben greifen wir nun auch auf diesen zu um unsere Antwort zu versenden.

HttpListenerRequest Request = context.Request;

context.Response.OutputStream.Write(byteArr, 0, byteArr.Length);

context.Response.Close();

Und schon bekommt der aufrufende Client die Antwort des ByteArrays geliefert. Über header Informationen brauchen wir uns nicht sorgen da dies bereits vom HTTPListener übernommen wird.

Gestoppt werden kann der Listener über den unten aufgeführten Befehl:

Listener.Stop();

Solang der HTTPListener läuft wird er alle Anfragen brav beantworten.

Das war es dann auch schon. Ich wünsch Euch viel Spaß beim Ausprobieren.