Winsock fout

Status
Niet open voor verdere reacties.

pascallino

Gebruiker
Lid geworden
29 dec 2009
Berichten
167
Ik ben bezig met een app.
Ben bezig met het server gedeelte maar krijg telkens een foutmelding bij het verzenden.
Dit is mijn code:
Code:
Public Class Frm_main

    Dim isConected As Boolean = False
    Dim ip As String

    Private Sub Frm_main_starting() Handles MyBase.Load
        Btn_hibernate.Enabled = False
        Btn_open.Enabled = False
        Btn_send_keys.Enabled = False
        Btn_shutdown.Enabled = False
    End Sub

    Private Sub Frm_main_closing() Handles Me.FormClosing
        Try
            W1.Close()
        Catch ex As System.Windows.Forms.AxHost.InvalidActiveXStateException
            MsgBox(ex.ToString)
        End Try
    End Sub


    Private Sub Btn_connect_Click() Handles Btn_connect.Click
        ip = InputBox("Met welk ip wil je conecten?", "Connect")
        If ip = Nothing Then
            MsgBox("U moet een correct ip invoeren", MsgBoxStyle.Critical, "Fout")
        ElseIf ValidIP(ip) = False Then
            MsgBox("U moet een correct ip invoeren", MsgBoxStyle.Critical, "Fout")
        Else
            Try
                W1.Close()
                W1.RemoteHost = ip
                W1.RemotePort = "5013"
                W1.Connect()
                Rtb_1.Text += "Sucsesvol geconect met: " & ip & " Op poort: 5013" & vbNewLine
                isConected = True
                Btn_hibernate.Enabled = True
                Btn_open.Enabled = True
                Btn_send_keys.Enabled = True
                Btn_shutdown.Enabled = True
            Catch ex As System.Windows.Forms.AxHost.InvalidActiveXStateException
                Rtb_1.Text += "Fout: " & ex.ToString & vbNewLine
            Catch ex1 As Exception
                Rtb_1.Text += "Fout: " & ex1.ToString & vbNewLine
            End Try
        End If
    End Sub

    Private Sub Btn_send_keys_click() Handles Btn_send_keys.Click
        If isConected = True Then
            Dim input = InputBox("Wat wil je verzenden?", "Send Keys")
            If input = Nothing Then
                MsgBox("U moet ten minste één teken invoeren!", MsgBoxStyle.Critical, "Opgelet")
                Btn_send_keys_click()
            Else
                Send_Data("send_keys|" & input, "Verzonden chars: " & input)
            End If
        Else
            MsgBox("U moet eerst verbinding maken!")
            Btn_connect_Click()
        End If

    End Sub

    Private Sub Btn_shutdown_Click() Handles Btn_shutdown.Click
        Send_Data("shutdown", "Shutting down.")
    End Sub

    Private Sub Btn_hibernate_Click() Handles Btn_hibernate.Click
        Send_Data("hibernate", "Hibernate started")
    End Sub

    Private Sub Btn_open_Click() Handles Btn_open.Click
        If isConected = True Then
            Dim input = InputBox("Welke opdracht wil je uitvoeren?" & vbNewLine & "Het hele pad graag. (bv. C:\Windows\system32\shutdown.exe /h)", "Open...")
            If input.Length <= 5 Then
                MsgBox("U moet ten minste zes tekens invoeren!", MsgBoxStyle.Critical, "Opgelet")
                Btn_open_Click()
            Else
                Send_Data("open|" & input, "Try to start: " & input)
            End If
        Else
            MsgBox("U moet eerst verbinding maken!")
            Btn_connect_Click()
        End If
    End Sub

    Private Sub Send_Data(ByVal data As String, ByVal message As String)
        If isConected = True Then
            Try
                W1.SendData(data)
                Rtb_1.Text += message & vbNewLine
            Catch ex As System.Windows.Forms.AxHost.InvalidActiveXStateException
                Rtb_1.Text += "Fout: " & ex.ToString
            Catch ex1 As Exception
                Rtb_1.Text += "Fout: " & ex1.ToString
            End Try
        Else
            MsgBox("U moet eerst verbinding maken!")
            Btn_connect_Click()
        End If
    End Sub

    Public Function ValidIP(ByVal Address As String) As Boolean
        Return System.Net.IPAddress.TryParse(Address, Nothing)
    End Function

End Class
Dit is de foutcode:
Code:
Fout: System.Runtime.InteropServices.COMException (0x800A9C46): Exception from HRESULT: 0x800A9C46
   at MSWinsockLib.IMSWinsockControl.SendData(Object data)
   at AxMSWinsockLib.AxWinsock.SendData(Object data)
   at Server_app.Frm_main.Send_Data(String data, String message) in C:\Users\Pascal\AppData\Local\Temporary Projects\Server app\Frm_main.vb:line 90
Ik weet ook niet hoe ik een client maak.
De tutorial stopte hier.
Kan iemand helpen???
Mvg. Pascallinootje
 
Laatst bewerkt:
Ik ben erachter.
Mischien slim om de volgende keer ook de client te laten draaien!!
Mijn code:
Client:
Code:
Imports System.Net

Public Class Frm_main

    Private Function LocalIP() As String
        Dim host As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName)
        If host.AddressList.Length > 0 Then
            Debug.WriteLine(host.AddressList(0).ToString)
        End If
        Return host.AddressList(2).ToString
    End Function

    Private Sub Frm_main_loading() Handles MyBase.Load
        Ws1.LocalPort = 1234
        Ws1.Listen()
        Rtb_1.Text += "Local ip= " & LocalIP() & vbNewLine
    End Sub

    Private Sub Winsock1_ConnectionRequest(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent) Handles Ws1.ConnectionRequest
        Ws1.Close()
        Ws1.Accept(e.requestID)
    End Sub

    Private Sub Winsock1_DataArrival(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles Ws1.DataArrival
        Dim data As String = ""
        Dim opt() As String
        Ws1.GetData(data)
        opt = Split(data, "|")

        Select Case opt(0)
            Case "connect"
                Me.Text = "Verbindig gemaakt"
            Case "send_keys"
                Rtb_1.Text += "Verzonden chars: " & opt(1) & vbNewLine
                SendKeys.Send(opt(1))
            Case "shutdown"
                Shell("shutdown")
                Rtb_1.Text += "Shutting down" & vbNewLine
            Case "hibernate"
                Shell("shutdown /h")
                Rtb_1.Text += "Hibernate" & vbNewLine
            Case "open"
                Try
                    Shell(opt(1))
                Catch ex As Exception
                End Try
                Rtb_1.Text += "Opening: " & opt(1) & vbNewLine
        End Select
    End Sub

End Class

Server:
Code:
Public Class Frm_main

    Dim isConected As Boolean = False
    Dim ip As String

    Private Sub Frm_main_starting() Handles MyBase.Load
        Btn_hibernate.Enabled = False
        Btn_open.Enabled = False
        Btn_send_keys.Enabled = False
        Btn_shutdown.Enabled = False
    End Sub

    Private Sub Frm_main_closing() Handles Me.FormClosing
        Try
            W1.Close()
        Catch ex As System.Windows.Forms.AxHost.InvalidActiveXStateException
            MsgBox(ex.ToString)
        End Try
    End Sub


    Private Sub Btn_connect_Click() Handles Btn_connect.Click
        ip = InputBox("Met welk ip wil je conecten?", "Connect")
        If ip = Nothing Then
            MsgBox("U moet een correct ip invoeren", MsgBoxStyle.Critical, "Fout")
        ElseIf ValidIP(ip) = False Then
            MsgBox("U moet een correct ip invoeren", MsgBoxStyle.Critical, "Fout")
        Else
            Try
                W1.Close()
                W1.Connect(ip, 1234)
                Rtb_1.Text += "Sucsesvol geconect met: " & ip & " Op poort: 5013" & vbNewLine
                isConected = True
                Btn_hibernate.Enabled = True
                Btn_open.Enabled = True
                Btn_send_keys.Enabled = True
                Btn_shutdown.Enabled = True
            Catch ex As System.Windows.Forms.AxHost.InvalidActiveXStateException
                Rtb_1.Text += "Fout: " & ex.ToString & vbNewLine
            Catch ex1 As Exception
                Rtb_1.Text += "Fout: " & ex1.ToString & vbNewLine
            End Try
        End If
    End Sub

    Private Sub Btn_send_keys_click() Handles Btn_send_keys.Click
        If isConected = True Then
            Dim input = InputBox("Wat wil je verzenden?", "Send Keys")
            If input = Nothing Then
                MsgBox("U moet ten minste één teken invoeren!", MsgBoxStyle.Critical, "Opgelet")
                Btn_send_keys_click()
            Else
                Send_Data("send_keys|" & input, "Verzonden chars: " & input)
            End If
        Else
            MsgBox("U moet eerst verbinding maken!")
            Btn_connect_Click()
        End If

    End Sub

    Private Sub Btn_shutdown_Click() Handles Btn_shutdown.Click
        Send_Data("shutdown|", "Shutting down.")
    End Sub

    Private Sub Btn_hibernate_Click() Handles Btn_hibernate.Click
        Send_Data("hibernate|", "Hibernate started")
    End Sub

    Private Sub Btn_open_Click() Handles Btn_open.Click
        If isConected = True Then
            Dim input = InputBox("Welke opdracht wil je uitvoeren?" & vbNewLine & "Het hele pad graag. (bv. C:\Windows\system32\shutdown.exe /h)", "Open...")
            If input.Length <= 3 Then
                MsgBox("U moet ten minste zes tekens invoeren!", MsgBoxStyle.Critical, "Opgelet")
                Btn_open_Click()
            Else
                Send_Data("open|" & input, "Try to start: " & input)
            End If
        Else
            MsgBox("U moet eerst verbinding maken!")
            Btn_connect_Click()
        End If
    End Sub

    Private Sub Send_Data(ByVal data As String, ByVal message As String)
        If isConected = True Then
            Try
                W1.SendData(data)
                Rtb_1.Text += message & vbNewLine
            Catch ex As System.Windows.Forms.AxHost.InvalidActiveXStateException
                Rtb_1.Text += "Fout: " & ex.ToString
            Catch ex1 As Exception
                Rtb_1.Text += "Fout: " & ex1.ToString
            End Try
        Else
            MsgBox("U moet eerst verbinding maken!")
            Btn_connect_Click()
        End If
    End Sub

    Public Function ValidIP(ByVal Address As String) As Boolean
        Return System.Net.IPAddress.TryParse(Address, Nothing)
    End Function

    Private Sub connect_event() Handles W1.ConnectEvent
        Me.Text += "Connect [" & ip & "]"
        W1.SendData("connect|")
    End Sub

End Class

Mvg. Pascallinootje
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan