Close Event

Userbeck

Mitglied
Hi,

also ich hab ein Programm geschrieben wo ich eine WinSock Verbindung aufbaue, aber einiger Zeit wird das wie eine DOS Attacke gehandelt und es wird geblockt und darum suche ich in VB.NET ein Fenster Event wo man beim schließen des Fensters noch was ausführen kann, um jetzt nicht dauernd einen neuen Sockel zu erstellen habe ich mir gedacht beim "schließen des Fensters" die Verbindung zu "kappen"!

Ich hab bei "Suchen & Finden" geguckt, aber kein Artikel und kein Beitrag darüber :( !
 
Dieses Teil ist ein "Server IP Tool" und aktualisiert die IP Adresse bei http://www.dyndns.org und immer nach mehreren Sockel erstellen wird meine Adresse für 2Tage gesperrt :(!

Aber Close Event müsste es geben, bei Code Projekt gibs einen Artikel über das :)!
 
Aktualisierst du so oft? Denn im Grunde müsstest das ja nur nach jedem Verbindungsaufbau zu deinem Provider machen. Da können eigentlich gar nicht soviele Anfragen zusammenkommen, damit du gesperrt wirst.

Hast eventuell einen Loop oder whatever drinnen?
 
Also ich mach das mit einem Timer nach einer Minute, "resete" ich den Timer und das Spiel geht von vorne los :)!

Die WinSock Function habe ich auf einer anderen Form ausgelegt:

Form1.bWinSock()

Code:
    Function bWinSock(ByVal szText As Object) As Boolean

        Dim pAktivWinSockClass As New WinsockClass

        pAktivWinSockClass.Protocol = ProtocolConstants.sckTCPProtocol
        pAktivWinSockClass.RemoteHost = "63.208.196.94"
        pAktivWinSockClass.RemotePort = 80
        pAktivWinSockClass.Connect()

        Do While (pAktivWinSockClass.State <> StateConstants.sckConnected)
            If (pAktivWinSockClass.State <> StateConstants.sckConnecting) Then Exit Do
            DoEvents()
        Loop

        If pAktivWinSockClass.State = StateConstants.sckConnected Then

            'MsgBox("Verbindung hergestellt!", MsgBoxStyle.OKOnly, "WinSock!")

        End If

        If pAktivWinSockClass.State = StateConstants.sckConnected Then

            NetzwerkStatusStatusStripPanel.Text = " NetzwerkStatus: On"

        End If

        If pAktivWinSockClass.State = StateConstants.sckError Then

            NetzwerkStatusStatusStripPanel.Text = " NetzwerkStatus: ERROR!"

        End If

        If pAktivWinSockClass.State = StateConstants.sckClosed Then

            NetzwerkStatusStatusStripPanel.Text = " NetzwerkStatus: Off [" & pAktivWinSockClass.State & "]"

        End If

        'MsgBox(pAktivWinSockClass.State, MsgBoxStyle.OKOnly, "WinSock!")

        pAktivWinSockClass.SendData(szText)

        Form9.TextList = Form9.TextList & szText & vbNewLine
        Form13.RichTextBox1.Text = Form9.TextList
        Form13.ShowDialog()

        'MsgBox(szText, MsgBoxStyle.Information, "GET String")

        pAktivWinSockClass.Close()

        Return True

    End Function

Und auf Form9 was das Hauptfenster ist, reagiert der Timer:

Code:
Public Class Form9

    Public a As Integer = 0
    Public b As Integer = 0
    Public TextList As String

    Public ramSQL_TABLE As String

    Function szDefineRam(ByVal szIndex As String, ByVal szHost As String, ByVal szBase64 As String) As Boolean

        SaveSetting(Me.ProductName, "Settings", "szIndex", szIndex)
        SaveSetting(Me.ProductName, "Settings", "szHost", szHost)
        SaveSetting(Me.ProductName, "Settings", "szBase64", szBase64)

        Return True

    End Function

    Private Sub Form9_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        SaveSetting(Me.ProductName, "Settings", "server_", "")

        If Form1.lgRow = 0 And GetSetting(Me.ProductName, "Settings", "user_table") = "" Then

            Me.Timer1.Enabled = False
            b = 0

            If GetSetting(Me.ProductName, "Settings", "server_") <> "" Then

                Me.Timer1.Enabled = True
                b = 0

            End If

            If GetSetting(Me.ProductName, "Settings", "dialog_") = "false" Then

                If GetSetting(Me.ProductName, "Settings", "dialog_log") = "user" Then

                    Form1.Show()

                Else

                    Form1.Show()

                End If

            Else

                Form6.Show()

            End If

        Else

            Me.Timer1.Enabled = False
            Form1.Show()

        End If

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        If (GetSetting(Me.ProductName, "Settings", "user_table") <> "") Then

            DeleteSetting(Me.ProductName, "Settings", "user_table")
            DeleteSetting(Me.ProductName, "Settings", "dialog_")
            DeleteSetting(Me.ProductName, "Settings", "dialog_log")

            ProgressBar1.Value = 100
            Me.Close()

        Else

            Button1.Enabled = False

        End If

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        a = a + 1
        b = b + 1

        If GetSetting(Me.ProductName, "Settings", "server_") <> "" And GetSetting(Me.ProductName, "Settings", "user_table") <> "" Then

            If a > 10 Then

                Me.ProgressBar1.Value = 10
                Me.PictureBox1.Image = System.Drawing.Bitmap.FromFile("C:\Programme\RP Homepage - Webcreations Group\Server IP Tool v2.0\vb_001.ico")

            End If

            If a > 20 Then

                Form13.Close()
                Me.ProgressBar1.Value = 20

            End If

            If a > 30 Then

                Me.ProgressBar1.Value = 30

            End If

            If a > 40 Then

                Me.ProgressBar1.Value = 40

            End If

            If a > 50 Then

                Me.ProgressBar1.Value = 50

            End If

            If a > 60 Then

                Me.ProgressBar1.Value = 60

            End If

            If a > 70 Then

                Me.ProgressBar1.Value = 70

            End If

            If a > 80 Then

                Me.ProgressBar1.Value = 80

            End If

            If a > 90 Then

                Me.ProgressBar1.Value = 90

                Me.PictureBox1.Image = System.Drawing.Bitmap.FromFile("C:\Programme\RP Homepage - Webcreations Group\Server IP Tool v2.0\st_001.png")

            End If

            If a = 100 Then

                Form1.bWinSock("GET /nic/update?hostname=" & GetSetting(Me.ProductName, "Settings", "szIndex") & " HTTP/1.0" & vbCrLf & "Host: " & GetSetting(Me.ProductName, "Settings", "szHost") & vbCrLf & "Authorization: Basic " & GetSetting(Me.ProductName, "Settings", "szBase64") & vbCrLf & "User-Agent: Server IP Tool v2.0 developer@rp-homepage.com" & vbCrLf & vbCrLf)

                a = 0
                b = 0

                Me.Timer1.Enabled = False
                Me.Timer1.Enabled = True
                Me.ProgressBar1.Value = 100
                Me.Timer1.Interval = 1000
                Me.Timer1.Start()

                Me.PictureBox1.Image = System.Drawing.Bitmap.FromFile("C:\Programme\RP Homepage - Webcreations Group\Server IP Tool v2.0\st_002.png")

            End If

            If b = 1 Then

                If a > 90 Then

                    Me.Text = "Übermittel Daten an den DynDNS.org Server"

                Else

                    Me.Text = "Update now a Host"

                End If

            End If

            If b = 2 Then

                Me.Text = "Update now a Host."

                If a > 90 Then

                    Me.Text = "Übermittel Daten an den DynDNS.org Server"

                Else

                    Me.Text = "Update now a Host."

                End If

            End If

            If b = 3 Then

                If a > 90 Then

                    Me.Text = "Übermittel Daten an den DynDNS.org Server"

                Else

                    Me.Text = "Update now a Host.."

                End If

            End If

            If b = 4 Then

                Me.Text = "Update now a Host..."

                b = 0

            End If

        End If

    End Sub
End Class

Das sind noch andere Functionen dabei die nur dafür sind, dass jetzt wichtige Daten als Ram überbleiben :)! Und bei der Form9 brauch ich eine Function oder ein Event was merkt ob jetzt das Fenster geschlossen wird oder nicht :)! Sowas wie bei einer c++ class wenn man den Destruktor benutzt um aufzuräumen!

Edit:

Gibs Funktionen die einen sagen ob die Verbindung grad da oder geschlossen ist?
 
Zuletzt bearbeitet:
Zurück