Laptop Bildschirm auf Handy erweitern

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von J.Herbrich.

    Die HttpListener möglichkeit ist genau das was ich brauche. Aber erlichgesagt verstehe ich das garnicht. Jedesmal wenn ich mir die Beschreibungen/Dokumentationen dazu anschaue fühle ich mich als wäre ich der letzte Idiot da ich es einfach nicht verstehe. :( Darum meine Frage: kann mir Bitte jemand das so erklären das ich es verstehe?
    Danke.
    Moin,

    hier ist mal ein kleines Beispiel mit Erklärung in Form von Kommentaren. War allerdings zu faul das noch ordentlich zu formatieren, der Original-Code in C# ist im Expander.

    Zum Ausführen musst du Visual Studio mit Adminrechten starten ;)

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.Text
    3. Namespace HttpListener_Sample
    4. Class Program
    5. Private Shared Sub Main(args As String())
    6. ' Prüfen ob das System den HttpListener unterstützt
    7. ' (Mindestens Windows XP SP2 oder Windows Server 2003)
    8. If Not HttpListener.IsSupported Then
    9. Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.")
    10. Console.ReadLine()
    11. Return
    12. End If
    13. Dim content As String = "<html><head><title>HttpListener Sample</title></head><body><h1>Das ist ein Beispiel für den HttpListener</h1></body></html>"
    14. ' Neue instanz vom HttpListener erstellen
    15. Using listener As New HttpListener()
    16. ' Prefixes hinzufügen, auf die der Listener reagiert
    17. ' In dem fall über die Adresse "localhost"
    18. listener.Prefixes.Add("http://+:80/")
    19. ' Den Server starten, sodass auf Anfragen gewartet wird
    20. listener.Start()
    21. ' Methode zum die Aufgerufen wird,
    22. ' wenn eine Verbindung aufgebaut wurde
    23. listener.BeginGetContext(Function(ar)
    24. ' HttpListenerContext abrufen
    25. Dim context = listener.EndGetContext(ar)
    26. ' HttpListenerResponse abrufen
    27. ' über den kann man Daten zum Client senden
    28. Dim response = context.Response
    29. ' Da übers Netzwerk nur bytes gesendet werden können,
    30. ' muss man den String erst in bytes convertieren
    31. Dim buffer As Byte() = Encoding.UTF8.GetBytes(content)
    32. ' Dem Client(Browser etc.) Daten senden
    33. response.OutputStream.Write(buffer, 0, buffer.Length)
    34. ' Der OutputStream muss am Ende geschlossen werden
    35. response.OutputStream.Close()
    36. End Function, Nothing)
    37. Console.WriteLine("Zum beenden [Enter] drücken")
    38. Console.ReadLine()
    39. End Using
    40. End Sub
    41. End Class
    42. End Namespace


    C# Code (Original)

    C-Quellcode

    1. using System;
    2. using System.Net;
    3. using System.Text;
    4. namespace HttpListener_Sample
    5. {
    6. class Program
    7. {
    8. static void Main(string[] args)
    9. {
    10. // Prüfen ob das System den HttpListener unterstützt
    11. // (Mindestens Windows XP SP2 oder Windows Server 2003)
    12. if (!HttpListener.IsSupported)
    13. {
    14. Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
    15. Console.ReadLine();
    16. return;
    17. }
    18. string content = "<html><head><title>HttpListener Sample</title></head><body><h1>Das ist ein Beispiel für den HttpListener</h1></body></html>";
    19. // Neue instanz vom HttpListener erstellen
    20. using (HttpListener listener = new HttpListener())
    21. {
    22. // Prefixes hinzufügen, auf die der Listener reagiert
    23. // In dem fall über die Adresse "localhost"
    24. listener.Prefixes.Add("http://+:80/");
    25. // Den Server starten, sodass auf Anfragen gewartet wird
    26. listener.Start();
    27. // Methode zum die Aufgerufen wird,
    28. // wenn eine Verbindung aufgebaut wurde
    29. listener.BeginGetContext((ar) =>
    30. {
    31. // HttpListenerContext abrufen
    32. var context = listener.EndGetContext(ar);
    33. // HttpListenerResponse abrufen
    34. // über den kann man Daten zum Client senden
    35. var response = context.Response;
    36. // Da übers Netzwerk nur bytes gesendet werden können,
    37. // muss man den String erst in bytes convertieren
    38. byte[] buffer = Encoding.UTF8.GetBytes(content);
    39. // Dem Client(Browser etc.) Daten senden
    40. response.OutputStream.Write(buffer, 0, buffer.Length);
    41. // Der OutputStream muss am Ende geschlossen werden
    42. response.OutputStream.Close();
    43. }, null);
    44. Console.WriteLine("Zum beenden [Enter] drücken");
    45. Console.ReadLine();
    46. }
    47. }
    48. }
    49. }



    MfG, Trudi
    Danke. Eine sache noch:
    Was bedeutet diese fehlermeldung?:


    Spoiler anzeigen
    Warnung 1 Von der Funktion "<anonyme Methode>" wird nicht in allen Codepfaden ein Wert zurückgegeben. Wenn das Ergebnis verwendet wird, kann zur Laufzeit eine NULL-Verweisausnahme auftreten. C:\Users\Basti\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 46 42 WindowsApplication1


    die fehlermeldung bezieht sich beim quellcode auf das
    " End Function, Nothing " (relativ am ende), glaube ich zumindest.

    EDIT: Achsoo und wie rufe ich den HTML-Code dann im Browser auf? Das habe ich Immernoch nicht ganz verstanden.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Basti“ ()

    Basti schrieb:

    Was bedeutet diese fehlermeldung?:


    Hier klicken für weitere Informationen
    Warnung 1 Von der Funktion "<anonyme Methode>" wird nicht in allen Codepfaden ein Wert zurückgegeben. Wenn das Ergebnis verwendet wird, kann zur Laufzeit eine NULL-Verweisausnahme auftreten. C:\Users\Basti\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 46 42 WindowsApplication1


    Ersetze Function mit Sub ;)

    Basti schrieb:

    EDIT: Achsoo und wie rufe ich den HTML-Code dann im Browser auf? Das habe ich Immernoch nicht ganz verstanden.


    Die Seite kannst du auf dem Computer, auf dem der Listener läuft, mit localhost oder 127.0.0.1 aufrufen und mit deinem Handy, wenn es im lokalen Netzwerk angemeldet ist, über deine lokale IP. Die bekommst du, wenn du in der Command Line den Befehl ipconfig eingibst.

    Außerdem kann man die Seite im Moment nur einmal aufrufen, du müsstest die anonyme Funktion auslagern und am Ende wieder listener.BeginGetContext aufrufen.
    Den HttpListener übergibt man dann über den das zweite Argument von BeginGetContext.

    MfG
    Habe Funktion ersetzt und dier Fehlermeldung ist weg. Danke.

    anonyme Funktion auslagern und am Ende wieder listener.BeginGetContext aufrufen.

    Also die ausführung wiederholen?

    Das geht aber nur mit HTML Dateien soweit ich weiß PHP muss man noch was hinzufügen

    Ist nicht so schlimm wenn PHP nicht geht, da ich es eh nicht kann :P. wenn ich das richtig verstanden habe kommt der Html code hier rein:

    VB.NET-Quellcode

    1. Dim content As String = "<html><head><title>HttpListener Sample</title></head><body><h1>Das ist ein Beispiel für den HttpListener</h1></body></html>"

    wobei ich den code gegen den Inhalt einer Textbox austauschen möchte oder gegen eine Variable.
    Wofür steht egl das console.writeline am Ende? Ich dachte das kommt nur in consolen anwendungen.

    Danke an alle die sich die Mühe machen mir zu Helfen :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Basti“ () aus folgendem Grund: Rechtschreibung,etwas vergessen

    Hey,

    vielleicht solltest du dir nochmal die Grundlagen anschauen :)
    Wie man eine Variable ändert oder austauscht, eine Funktion aufruft oder was der Unterschied zwischen Sub und Function ist gehört definitiv dazu ;)

    Wenn du dich weiter zum HttpListener informieren willst, dann schau dir mal den MSDN-Artikel zu dem HttpListener an oder google etwas, habe dort auch etliche Beispiele gefunden wie man den richtig verwendet.

    MfG
    Warum PHP wen es als Ad-Hoc lösung besser konzipiert währe, ich gehe hierbei mal einfach davon aus das du beide Geräte Dabei hast. Also wieso (falls nicht was andere oder noch mehr Gewünscht ist, ala Zentrale Archivierung oder so) nicht Internet Verbindung schonen, weil auch da fallen ja unterwegs (wen du nicht gerade W-Lan hast) die Kosten für die Datenverbindung an. !

    LG, J.Herbrich