Winsock "Pingen" naar IP + port

Status
Niet open voor verdere reacties.

EgbertJan

Gebruiker
Lid geworden
22 aug 2012
Berichten
62
Hallo mensen,

Ik heb vrij weinig ervaring met Winsock (vrijwel niks eigenlijk), maar het schijnt dat je er goed mee kan pingen naar een specifieke port op een bepaalde IP (zowel UDP als TCP). Ik zou graag een programma willen schrijven waarbij een onderdeel is dat ik naar een port ping en wanneer er een timeout komt / geen verbinding is dat ik dan een andere sub kan laten uitvoeren.

Nu heb ik een tijdje gegoogeld, maar ik kom helaas nergens op uit waar ik zelf iets mee kan. Het enige wat interessant genoeg leek (maar helaas niet werkte) was de volgende code:

Code:
        If AxWinsock1.State = sckConnected Then
            MsgBox("Connected")
        Else
            MsgBox("Not Connected")
        End If

Helaas komt er een error bij mijn State en sckConnected. Volgens VB kan State niet worden gebruikt als expressie en is "sckConnected" niet declared.

Heeft iemand een idee wat voor een code ik zou kunnen gebruiken voor dit principe? Ik zou het zeer op prijs stellen :)
 
Aan je code is niet te zien wat er eventueel niet goed is omdat de cruciale zaken er niet in staan. Hier een voorbeeldje:

Code:
Dim Winsock1 As Winsock 'Object type definitie

Sub Init()
    Set Winsock1 = CreateObject("MSWinsock.Winsock") 'Object initialisatie

    Winsock1.RemoteHost = "IP of computernaam"
    Winsock1.RemotePort = "Poortnummer"
    Winsock1.Connect
    'Eventueel een seconde pause inbouwen
    If Winsock1.State  sckConnected
        MsgBox("Verbonden")
    End If
End Sub
 
Laatst bewerkt:
Aan je code is niet te zien wat er eventueel niet goed is omdat de cruciale zaken er niet in staan. Hier een voorbeeldje:

Code:
Sub Init()
    Dim Winsock1 As Winsock 'Object type definitie
    Set Winsock1 = CreateObject("MSWinsock.Winsock") 'Object initialisatie
    Winsock1.RemoteHost = "IP of computernaam"
    Winsock1.RemotePort = "Poortnummer"
    Winsock1.Connect

    If Winsock1.State  sckConnected
        MsgBox("Verbonden")
    End If
End Sub

Excuses, vergeten te melden.

Code:
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        AxWinsock1.RemoteHost = "localhost"
        AxWinsock1.RemotePort = port
        AxWinsock1.Connect()
    End Sub

Volledige code komt momenteel hier op neer:
Code:
Public Class Form1
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If AxWinsock1.State = sckConnected Then
            MsgBox("Connected")
        Else
            MsgBox("Not Connected")
        End If
    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        AxWinsock1.RemoteHost = "localhost"
        AxWinsock1.RemotePort = port
        AxWinsock1.Connect()
    End Sub
End Class
 
Ik had net m'n voorbeeldje aangepast. De Dim Winsock1 moet buiten de procedures.
Ook heb je een eventueel event handler nodig in je Class module:
Private WithEvents Winsock1 As Winsock

Dan is de eerste Dim niet nodig.
 
Laatst bewerkt:
Momenteel heb ik het volgende:

Form1
Code:
Imports MSWinsockLib

Public Class Form1
    Private WithEvents Winsock1 As Winsock


    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If AxWinsock1.State = sckConnected Then
            MsgBox("Connected")
        Else
            MsgBox("Not Connected")
        End If
    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        AxWinsock1.RemoteHost = "localhost"
        AxWinsock1.RemotePort = 27015
        AxWinsock1.Connect()
    End Sub
End Class

Module1
Code:
Imports MSWinsockLib

Module Module1
    Dim AxWinsock1 As Winsock 'Object type definitie
End Module

Alsnog krijg ik de zelfde problemen met mijn regel wat ik eerder ook al vermeldt had.
Code:
If AxWinsock1.State = sckConnected Then
 
Het is al opgelost via een andere methode. Toch bedankt voor de hulp :)

Code:
  Try
            Dim Range As TcpClient = New TcpClient("" + TextBox1.Text + "", "" + TextBox2.Text + "")

            If Range.Connected = True Then
                MsgBox("" + TextBox2.Text + " is open")
                Range.Close()
           
            End If
        Catch ex As System.Exception

            MsgBox("" + TextBox2.Text + " is closed")
        End Try
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan