Aktuelle Verbindungen in einer Textbox anzeigen lassen.

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Aktuelle Verbindungen in einer Textbox anzeigen lassen.

    Hallo liebe vb com,
    ich bin auf der suche nach einer Möglichkeit, in meinem Programm die aktuellen Verbindungen anzeigen zulassen bzw. am besten die IP Adressen der gerade besuchten Webseiten.
    "Ist dies ohne weiteres möglich oder muss man dafür die gewählten Browser Injektion?" :huh: ?(

    *Titel und Textgröße angepasst* ~NoFear23m
    *Topic verschoben*

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Ein Ansatz wäre es, Eigeninitiative an den Tag zu legen und mal im Netz zu suchen !
    Da findet man dann z.B Ip-Adresse einer Webseite/Server auslesen.
    :rolleyes: "seufz"
    Hey,

    ich denke, das könnte Dir weiterhelfen. Ist im Grunde das, was Dir der Befehl "netstat" in der cmd-Konsole anzeigt (soweit ich das weiß).

    VB.NET-Quellcode

    1. Imports System.Net.NetworkInformation
    2. Public Class Form1
    3. Public Sub New()
    4. InitializeComponent()
    5. Dim i As TcpConnectionInformation() = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections()
    6. End Sub
    7. End Class


    Musst Du nur noch das rausfiltern, was für Dich interessant ist.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    VB.NET-Quellcode

    1. Imports System.Net.NetworkInformation
    2. Public Class Form1
    3. Public Sub New()
    4. InitializeComponent()
    5. Dim i As TcpConnectionInformation() = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections()
    6. For Each x As TcpConnectionInformation In i
    7. MessageBox.Show(x.RemoteEndPoint.ToString())
    8. Next
    9. End Sub
    10. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Danke dir nochmal @SpaceyX

    leider hab ich mir das eher so vorgestellt

    VB.NET-Quellcode

    1. ​Public Sub TCPc()
    2. InitializeComponent()
    3. Dim i As TcpConnectionInformation() = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections()
    4. For Each x As TcpConnectionInformation In i
    5. TextBox1.Text(x.RemoteEndPoint.ToString(vbNewLine))
    6. Next


    ist das auch möglich weil ich will von den gesammelten daten ein Punkt gezielt rauspicken.

    Fehler:

    VB.NET-Quellcode

    1. ​Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    2. Fehler BC30516 Fehler bei der Überladungsauflösung, da keine zugreifbare "Text" diese Anzahl von Argumenten akzeptiert. fwdqwd C:\Users\user\source\repos\fwdqwd\fwdqwd\Form1.vb 8 Aktiv
    Mhh, ich frage mich, wie Du Dir da einen Punkt "rauspicken" willst, wenn Du nicht einmal Strings zusammensetzten kannst.

    VB.NET-Quellcode

    1. Imports System.Net.NetworkInformation
    2. Public Class Form1
    3. Public Sub New()
    4. InitializeComponent()
    5. Dim i As TcpConnectionInformation() = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections()
    6. Dim s As String = String.Join(Environment.NewLine, i.Select(Of String)(Function(x) x.RemoteEndPoint.ToString()))
    7. MessageBox.Show(s)
    8. End Sub
    9. End Class


    Eigentlich solltest Du Dir den Punkt vorher rausfiltern und dann anzeigen, aber gut.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Die String wurde ja mit

    VB.NET-Quellcode

    1. ​Dim s As String = String.Join(Environment.NewLine, i.Select(Of String)(Function(x) x.RemoteEndPoint.ToString()))

    eingeführt aba wieso wird mir nun in der textbox "TCPcon" keine wert angezeigt?
    muss das in eine Schleife oder wie geht man da vor...
    und danke das du mir in meinen späten stunden bei einer Idee Hilfst :).
    bin nun wie folgent.

    VB.NET-Quellcode

    1. Public Sub TCPc()
    2. InitializeComponent()
    3. Dim i As TcpConnectionInformation() = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections()
    4. Dim s As String = String.Join(Environment.NewLine, i.Select(Of String)(Function(x) x.RemoteEndPoint.ToString()))
    5. TCPcon.Text = s
    6. End Sub
    7. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. End Sub
    9. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    10. TCPc()
    11. End Sub

    @SpaceyX
    Vielen dank nach einem neustart von VS hat es dann funktoniert. :)
    leider steh ich wieder vor dem nächsten Problem ich habe die Funktion nun in einem Timer eingeführt das Funktioniert auch Prima.
    Ich habe eine zweite Textbox dazugeben welche zum eingeben der gesuchten Verbindung steht und dann wenn sie da ist den Panel von Rot auf Grün macht.
    Leider funktioniert es nicht ganz so wie gedacht. lasse ich die Textbox leer funktioniert es sowie mit den Value´s ( "1" 2" 4 etc. .... )

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    2. Dim i As TcpConnectionInformation() = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections()
    3. Dim s As String = String.Join(Environment.NewLine, i.Select(Of String)(Function(x) x.RemoteEndPoint.ToString()))
    4. TextBox1.Text = s
    5. Dim Adresse As String = TextBox2.Text
    6. For Each lin As String In TextBox1.Lines
    7. If lin.Contains(Adresse) Then
    8. Panel1.BackColor = Color.Green
    9. Else
    10. Panel1.BackColor = Color.Red
    11. End If
    12. Next
    13. End Sub
    Hi,

    ich würde nicht die Einträge in der Textbox durchsuchen, sondern die bereits vorhandene Auflistung der Verbindungen.

    VB.NET-Quellcode

    1. Dim i As TcpConnectionInformation() = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections()
    2. Dim r As IEnumerable(Of TcpConnectionInformation) = i.Where(Function(x) x.RemoteEndPoint.Address.ToString() = Me.TextBox2.Text)


    Für mein Verständnis sollte die Anzeige (Panel) doch nur auf grün springen, falls die exakte Adresse in der Liste vorhanden ist, oder nicht? Somit würde ich das .Contains() durch ein = ersetzen. Hier auch aufpassen: x.RemoteEndPoint enthält die Adresse und den Port. Du musst die Property Address abfragen.

    VB.NET-Quellcode

    1. If Me.TextBox2.Text <> String.Empty Then
    2. Me.Panel1.BackColor = If(r.Count() > 0, Color.Green, Color.Red)
    3. Else
    4. Me.Panel1.BackColor = Color.Red
    5. End If


    Es sollte auch nur eine Aktion erfolgen, wenn überhaupt etwas in der TextBox2 steht. Falls ja, wird die oben gezeigte Abfrage ausgeführt und geprüft, ob Elemente vorhanden sind und entsprechen die BackColor gesetzt.

    Das komplette sollte dann in Etwa so aussehen.

    VB.NET-Quellcode

    1. Imports System.Net.NetworkInformation
    2. Public Class Form1
    3. Private WithEvents _t As New Timer With {.Interval = 1000}
    4. Public Sub New()
    5. InitializeComponent()
    6. AddHandler _t.Tick, AddressOf DoStuff
    7. _t.Start()
    8. Me.Panel1.BackColor = Color.Red
    9. End Sub
    10. Private Sub DoStuff(sender As Object, e As EventArgs)
    11. Dim i As TcpConnectionInformation() = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections()
    12. Dim s As String = String.Join(Environment.NewLine, i.Select(Of String)(Function(x) x.RemoteEndPoint.ToString()))
    13. Dim r As IEnumerable(Of TcpConnectionInformation) = i.Where(Function(x) x.RemoteEndPoint.Address.ToString() = Me.TextBox2.Text)
    14. If Me.TextBox2.Text <> String.Empty Then
    15. Me.Panel1.BackColor = If(r.Count() > 0, Color.Green, Color.Red)
    16. Else
    17. Me.Panel1.BackColor = Color.Red
    18. End If
    19. Me.TextBox1.Text = s
    20. End Sub
    21. End Class


    Über das Design mit dem Timer lässt sich mMn streiten.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Was macht der Code im Timer_Tick? Um alle x Millisekunden die aktuellen Verbindungen zu ermitteln oder um alle x Millisekunden den TextBox2.Text mit den Verbindungen zu vergleichen? Wenn zweiteres, dann gehört das in den TextBox2_TextChanged-EventHandler - oder besser in eine eigens benannte Sub, die dann im TextBox2_TextChanged-EventHandler aufgerufen wird. Der nächste Punkt ist, dass Deine Codelogik nicht stimmt. Du gehst jede Verbindungzeile durch und aufgrund des TextBox2.Text-Vergleiches setzt Du die Panel-Farbe. Wozu führt das? Dass bei 10 Verbindungen zwar alle durchgegangen werden, aber nur die letzte Verbindung mit ihrem Vergleich zum TextBox2.Text die endgültige Farbe setzt. Alle anderen Ergebnisse durch ihre Vergleiche werden ja überschrieben. Wenn es darum geht, dass wenigstens eine gefundene Übereinstimmung das Panel grün machen soll. dann entweder mit Exit For am Ende von Zeile#10 oder gleich mit LINQ.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.