mediatech15
mediatech15

Reputation: 7

VB.net Reference to a non-shared member requires an object reference

So in mist of programing a program I have bee stuck after roughly 6 hours of research and fiddling. I cannot resolve this error.

Public Class Main




Private Sub txt1_TextChanged(sender As Object, e As EventArgs) Handles mstag.TextChanged

End Sub

Private Sub Label1_Click(sender As Object, e As EventArgs) Handles lbl1.Click

End Sub

Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private Sub devicepage_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles devicepage.DocumentCompleted

End Sub
Public Class myform

    Private SIS As System.Net.Sockets.TcpClient
    Private netdata As NetworkStream
    Private Sub Run_Click(sender As Object, e As EventArgs) Handles Run.Click


        Dim msnumber As String = mstag.Text

        'Ping Code

        Try
            Dim ping As Ping = New Ping()
            Dim ping2 As Ping = New Ping()
            Dim ping3 As Ping = New Ping()
            Dim ping4 As Ping = New Ping()
            Dim pingreply As PingReply = ping.Send(mstag.Text + ".regent.edu")
            Dim pingreply2 As PingReply = ping2.Send(mstag.Text + ".regent.edu")
            Dim pingreply3 As PingReply = ping3.Send(mstag.Text + ".regent.edu")
            Dim pingreply4 As PingReply = ping4.Send(mstag.Text + ".regent.edu")
            Dim avgadd As Integer = pingreply.RoundtripTime + pingreply2.RoundtripTime + pingreply3.RoundtripTime + pingreply4.RoundtripTime
            Dim avg As Integer = avgadd / 4
            pingresults.Text &= "Ping Time: " & pingreply.RoundtripTime & "ms" & vbNewLine
            pingresults.Text &= "Ping Time: " & pingreply2.RoundtripTime & "ms" & vbNewLine
            pingresults.Text &= "Ping Time: " & pingreply3.RoundtripTime & "ms" & vbNewLine
            pingresults.Text &= "Ping Time: " & pingreply4.RoundtripTime & "ms" & vbNewLine
            pingresults.Text &= "Average Time: " & (avg) & "ms"

        Catch err As Exception
            pingresults.Text = "Ping Timeout"
        End Try


        'NSLOOKUP Code

        Try
            Dim p As New Process
            With p.StartInfo
                .FileName = "nslookup.exe"
                .Arguments = mstag.Text
                .CreateNoWindow = True
                .RedirectStandardOutput = True
                .RedirectStandardError = True
                .UseShellExecute = False
            End With

            p.Start()
            If p.WaitForExit(5000) Then
                'Read Output
                Dim reader As StreamReader = p.StandardOutput
                Dim output As String = reader.ReadToEnd()
                nslookupresults.Text = output

            Else
                'Failed
                nslookupresults.Text = ("Failed: Timeout")
            End If

        Catch err As Exception
            nslookupresults.Text = "Timeout. :("
        End Try

        'Telnet

        SIS = New System.Net.Sockets.TcpClient
        SIS.Connect(mstag.Text, 23)
        netdata = SIS.GetStream()

        If netdata.CanWrite And netdata.CanRead Then
            Dim bytes(SIS.ReceiveBufferSize) As Byte
            netdata.Read(bytes, 0, CInt(SIS.ReceiveBufferSize))
            Dim returndata As String = Encoding.ASCII.GetString(bytes)
            telnetout.Text = returndata
        End If

    End Sub


    Public Sub sissend_Click(sender As Object, e As EventArgs) Handles sissend.Click


        Dim myWriteBuffer As Byte() = Encoding.ASCII.GetBytes(telnetinput.Text)
        netdata.Write(myWriteBuffer, 0, myWriteBuffer.Length)

        Dim bytes(SIS.ReceiveBufferSize) As Byte
        netdata.Read(bytes, 0, CInt(SIS.ReceiveBufferSize))
        Dim returndata As String = Encoding.ASCII.GetString(bytes)
        telnetout.Text = returndata
    End Sub
End Class

The starred/Bold are the problematic pieces.

Updated to newest code from the entire project.

Upvotes: 0

Views: 1634

Answers (1)

ThatGuy
ThatGuy

Reputation: 228

You would do well to never assign a variable the name of a class accessible by your code.

This code block was updated per comments.

 Public Sub Run_Click(sender As Object, e As EventArgs) Handles Run.Click
    'Telnet

    Dim MYtcpClient As New System.Net.Sockets.TcpClient
    MytcpClient.Connect(mstag.Text, 23)
    Dim MyNetworkStream As NetworkStream = MYtcpClient.GetStream()


    If MyNetworkStream.CanWrite And MyNetworkStream.CanRead Then
        Dim bytes(MYtcpClient.ReceiveBufferSize) As Byte
        MyNetworkStream.Read(bytes, 0, CInt(MYtcpClient.ReceiveBufferSize))
        Dim returndata As String = Encoding.ASCII.GetString(bytes)
        telnetout.Text = returndata
    End If

End Sub

Also, the code below has no new instance of Networkstream or tcpclient and is trying to reference the class directly. I missed that when I first posted the answer. You'll need to create a new instance of each.

Public Sub sissend_Click(sender As Object, e As EventArgs) Handles sissend.Click

 Dim MYtcpClient As New System.Net.Sockets.TcpClient
    MytcpClient.Connect(mstag.Text, 23)
    Dim MyNetworkStream As new NetworkStream
    MyNetworkStream.Write(myWriteBuffer, 0, myWriteBuffer.Length)

    Dim bytes(MYtcpClient.ReceiveBufferSize) As Byte
    MyNetworkStream.Read(bytes, 0, CInt(MYtcpClient.ReceiveBufferSize))
    Dim returndata As String = Encoding.ASCII.GetString(bytes)
    telnetout.Text = returndata
End Sub

Per comments for long term connection

Public Class myForm
   Private MYtcpClient As System.Net.Sockets.TcpClient
   Private MyNetworkStream As NetworkStream
   Public Sub Run_Click(sender As Object, e As EventArgs) Handles Run.Click
    'Telnet

    MYtcpClient = New System.Net.Sockets.TcpClient
    MytcpClient.Connect(mstag.Text, 23)
    MyNetworkStream = MYtcpClient.GetStream()


    If MyNetworkStream.CanWrite And MyNetworkStream.CanRead Then
        Dim bytes(MYtcpClient.ReceiveBufferSize) As Byte
        MyNetworkStream.Read(bytes, 0, CInt(MYtcpClient.ReceiveBufferSize))
        Dim returndata As String = Encoding.ASCII.GetString(bytes)
        telnetout.Text = returndata
    End If

End Sub

Public Sub sissend_Click(sender As Object, e As EventArgs) Handles sissend.Click

 MyNetworkStream.Write(myWriteBuffer, 0, myWriteBuffer.Length)

    Dim bytes(MYtcpClient.ReceiveBufferSize) As Byte
    MyNetworkStream.Read(bytes, 0, CInt(MYtcpClient.ReceiveBufferSize))
    Dim returndata As String = Encoding.ASCII.GetString(bytes)
    telnetout.Text = returndata
End Sub
End Class

Removed Public Class Myform

Public Class Main




Private Sub txt1_TextChanged(sender As Object, e As EventArgs) Handles mstag.TextChanged

End Sub

Private Sub Label1_Click(sender As Object, e As EventArgs) Handles lbl1.Click

End Sub

Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private Sub devicepage_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles devicepage.DocumentCompleted

End Sub


    Private SIS As System.Net.Sockets.TcpClient
    Private netdata As NetworkStream
    Private Sub Run_Click(sender As Object, e As EventArgs) Handles Run.Click


        Dim msnumber As String = mstag.Text

        'Ping Code

        Try
            Dim ping As Ping = New Ping()
            Dim ping2 As Ping = New Ping()
            Dim ping3 As Ping = New Ping()
            Dim ping4 As Ping = New Ping()
            Dim pingreply As PingReply = ping.Send(mstag.Text + ".regent.edu")
            Dim pingreply2 As PingReply = ping2.Send(mstag.Text + ".regent.edu")
            Dim pingreply3 As PingReply = ping3.Send(mstag.Text + ".regent.edu")
            Dim pingreply4 As PingReply = ping4.Send(mstag.Text + ".regent.edu")
            Dim avgadd As Integer = pingreply.RoundtripTime + pingreply2.RoundtripTime + pingreply3.RoundtripTime + pingreply4.RoundtripTime
            Dim avg As Integer = avgadd / 4
            pingresults.Text &= "Ping Time: " & pingreply.RoundtripTime & "ms" & vbNewLine
            pingresults.Text &= "Ping Time: " & pingreply2.RoundtripTime & "ms" & vbNewLine
            pingresults.Text &= "Ping Time: " & pingreply3.RoundtripTime & "ms" & vbNewLine
            pingresults.Text &= "Ping Time: " & pingreply4.RoundtripTime & "ms" & vbNewLine
            pingresults.Text &= "Average Time: " & (avg) & "ms"

        Catch err As Exception
            pingresults.Text = "Ping Timeout"
        End Try


        'NSLOOKUP Code

        Try
            Dim p As New Process
            With p.StartInfo
                .FileName = "nslookup.exe"
                .Arguments = mstag.Text
                .CreateNoWindow = True
                .RedirectStandardOutput = True
                .RedirectStandardError = True
                .UseShellExecute = False
            End With

            p.Start()
            If p.WaitForExit(5000) Then
                'Read Output
                Dim reader As StreamReader = p.StandardOutput
                Dim output As String = reader.ReadToEnd()
                nslookupresults.Text = output

            Else
                'Failed
                nslookupresults.Text = ("Failed: Timeout")
            End If

        Catch err As Exception
            nslookupresults.Text = "Timeout. :("
        End Try

        'Telnet

        SIS = New System.Net.Sockets.TcpClient
        SIS.Connect(mstag.Text, 23)
        netdata = SIS.GetStream()

        If netdata.CanWrite And netdata.CanRead Then
            Dim bytes(SIS.ReceiveBufferSize) As Byte
            netdata.Read(bytes, 0, CInt(SIS.ReceiveBufferSize))
            Dim returndata As String = Encoding.ASCII.GetString(bytes)
            telnetout.Text = returndata
        End If

    End Sub


    Public Sub sissend_Click(sender As Object, e As EventArgs) Handles sissend.Click


        Dim myWriteBuffer As Byte() = Encoding.ASCII.GetBytes(telnetinput.Text)
        netdata.Write(myWriteBuffer, 0, myWriteBuffer.Length)

        Dim bytes(SIS.ReceiveBufferSize) As Byte
        netdata.Read(bytes, 0, CInt(SIS.ReceiveBufferSize))
        Dim returndata As String = Encoding.ASCII.GetString(bytes)
        telnetout.Text = returndata
    End Sub
End Class

Upvotes: 1

Related Questions