VBA Fehler bei abfragen von Port 1012 der Fritzbox

  • Access

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

    VBA Fehler bei abfragen von Port 1012 der Fritzbox

    Hi,

    kann mir vllt. jemand sagen oder mir einen Tipp geben, was an diesem Code falsch ist? Bekomme in VBA nur Fehlermeldungen. Danke schon einmal im voraus.

    Visual Basic-Quellcode

    1. Imports System.ComponentModel
    2. Imports System.Net.Sockets
    3. Imports System.Text
    4. Option Compare Database
    5. Private Sub Detailbereich_Click()
    6. Dim client As New tcpClient
    7. client.Connect("fritz.box", 1012)
    8. Me.Refresh()
    9. Dim stream As NetworkStream = client.GetStream
    10. Dim bytes As Byte() = New Byte() {}
    11. Me.Refresh()
    12. stream.Write(bytes, 0, bytes.Length)
    13. bytes = New Byte(1024) {}
    14. Dim str As String = String.Empty
    15. Me.Refresh()
    16. Dim count As Integer = stream.Read(bytes, 0, bytes.Length)
    17. str = Encoding.ASCII.GetString(bytes, 0, count)
    18. RichTextBox1.Text = vbNewLine & str
    19. stream.Close()
    20. client.Close()
    21. End Sub
    Das ist VB.NET Code. Der funktioniert in VBA nicht, da dies völlig verschiedene Dinge sind (abgesehen vom VB im Namen und gleicher Syntax und ähnlichen Datentypen)

    In VBA bräuchstest du dafür entweder eine ActiveX Komponente für Sockets (Winsock Control) oder du musst mit der WINAPI Funktion f_socket, sendto (dürfte für einen Anfänger aber vermutlich nicht so leicht zu realisieren sein ;)
    Das ist meine Signatur und sie wird wunderbar sein!
    Hallo Mettmann,

    du musst für VBA in Access zuerst die MSWINSCK.OCX in das SysWow64-Verzeichnis kopieren und per RegSvr32 registrieren.
    Da Microsoft die Nutzung des Winsock-ActiveX per Default in der Registry unterbunden hat, musst du noch den entsprechenden Killbit-Eintrag entfernen bzw. auf 0 setzen.

    Visual Basic-Quellcode

    1. [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\ActiveX Compatibility\{248DD896-BB45-11CF-9ABC-0080C7E7B78D}]
    2. "Compatibility Flags"=dword:00000000


    Nach einem Neustart kannst du dann im Access-Formular unter "weitere Steuerelemete" -> "Microsoft Winsock Control, Version 6" auswählen und in das Formular ziehen

    Zum Verbinden mit der Fritz!Box kannst du dann folgendes verwenden:

    Visual Basic-Quellcode

    1. Private Sub connect_Click()
    2. Winsock0.Close
    3. Winsock0.RemoteHost = "fritz.box"
    4. Winsock0.RemotePort = 1012
    5. Winsock0.connect
    6. End Sub


    Die Winsock hat ein DataArrival-Ereignis, wo du bequem die Meldungen abgreifen und z.B. in einer Textbox ausgeben kannst:

    Visual Basic-Quellcode

    1. Private Sub Winsock0_DataArrival(ByVal bytesTotal As Long)
    2. Dim sData As String
    3. Winsock0.GetData sData
    4. Form_Formular1.text1.Value = Form_Formular1.text1.Value & vbcrlc & sData
    5. End Sub


    Gruß Snuffchen

    PS: Dieser Tipp kostet 1 Mettbrötchen :D

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