Beispiel für StreamSocket gesucht um eine App per Browser zu steuern

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von buecherwurm.

    Beispiel für StreamSocket gesucht um eine App per Browser zu steuern

    Bei XAML Apps kann man das TcpListener Object nicht mehr nutzen. Dafür gibt es die StreamSocket Class msdn.microsoft.com/de-de/libra…sockets.streamsocket.aspx
    Ich komme aber damit nicht klar und finde kein Beispiel. Hat jemand ein einfaches Beispiel für mich als Vorlage? Einfach ein Button den ich im Browser anklicken kann, um auf dem Rechner mit der App (Netzwerkadresse) meine App zu beeinflussen?
    :saint:
    Hier mal das, was ich schon habe und mir zusammengestoppelt habe. Nicht, daß ich das alles verstehen würde... Funktionieren tut's ja auch noch nicht :/

    VB.NET-Quellcode

    1. Imports System.Text
    2. Imports Windows.Networking.Sockets
    3. Imports Windows.Storage.Streams
    4. Public NotInheritable Class MainPage
    5. Inherits Page
    6. Const BufferSize = 8192
    7. Public Sub New()
    8. InitializeComponent()
    9. InitHTTP()
    10. End Sub
    11. Public Async Sub InitHTTP()
    12. Dim listener = New StreamSocketListener()
    13. Dim port = 8000
    14. AddHandler listener.ConnectionReceived, AddressOf ProcessRequestAsync
    15. Await listener.BindServiceNameAsync(port.ToString())
    16. Dim socket As StreamSocket
    17. Dim output As IOutputStream = socket.OutputStream
    18. End Sub
    19. Private Async Sub ProcessRequestAsync(socket As StreamSocket)
    20. Dim request As StringBuilder = New StringBuilder()
    21. Using input As IInputStream = socket.InputStream
    22. Dim data As Byte()
    23. ReDim data(BufferSize)
    24. Dim Buffer As IBuffer = data.AsBuffer()
    25. Dim dataRead As Integer = BufferSize
    26. While (dataRead = BufferSize)
    27. Await input.ReadAsync(Buffer, BufferSize, InputStreamOptions.Partial)
    28. request.Append(Encoding.UTF8.GetString(data, 0, data.Length))
    29. dataRead = Buffer.Length
    30. End While
    31. End Using
    32. Using output As IOutputStream = socket.OutputStream
    33. Dim requestMethod As String = request.ToString().Split("\n")(0)
    34. Dim requestParts As String() = requestMethod.Split(" ")
    35. If (requestParts(0) = "GET") Then
    36. Await WriteResponseAsync(requestParts(1), output)
    37. Else
    38. Throw New InvalidDataException("HTTP method not supported: " & requestParts(0))
    39. End If
    40. End Using
    41. End Sub
    42. Private Async Function WriteResponseAsync(request As String, os As IOutputStream) As Task
    43. Dim html As String = "<html><head><title>Blinky App</title></head><body><form action=""blinky.html"" method=""Get""><input type=""radio"" name=""state"" value=""On"" onclick=""this.form.submit()""> On<br><input type=""radio"" name=""state"" value=""off"" checked onclick=""this.form.submit()""> Off</form></body></html>"
    44. Using resp As Stream = os.AsStreamForWrite()
    45. Dim bodyArray As Byte() = Encoding.UTF8.GetBytes(html)
    46. Dim Stream As MemoryStream = New MemoryStream(bodyArray)
    47. Dim header As String = String.Format("HTTP/1.1 200 OK\r\n" +
    48. "Content-Length: {0}\r\n" +
    49. "Connection: close\r\n\r\n",
    50. Stream.Length)
    51. Dim headerArray As Byte() = Encoding.UTF8.GetBytes(header)
    52. Await resp.WriteAsync(headerArray, 0, headerArray.Length)
    53. Await Stream.CopyToAsync(resp)
    54. Await resp.FlushAsync()
    55. End Using
    56. End Function
    57. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „buecherwurm“ ()