Netzwerkclient über TCP
Hallo,
ich habe mir ein kleines Tool unter VB.Net 2008 geschrieben mit dem man Nachrichten an einen anderen schicken kann.
Mein kleines Problem liegt darin, dass ich die Verbindung nicht schließen kann.
Wenn ich die Verbindung trenne und will sie wieder verbinden kommt der Fehler "Auf das verworfene Objekt kann nicht zugegriffen werden. Objektname: System.Net.Sockets.TcpClient."
Wie ich richtig die Verbindung trenne.
Kann mir einer Helfen.
Imports System.Net.Sockets
Imports System.Text
Imports System.Runtime.Remoting.Messaging
Public Class Form1
Private TCP_Client As New TcpClient
Dim bytes() As Byte
Private Stream As NetworkStream
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
'es wird nur gesendet wenn die verbindung steht
If TCP_Client.Connected = True Then
TCP_Client.Close()
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Show()
Me.Activate()
Me.Refresh()
End Sub
Private Sub onGetData(ByVal ar As System.IAsyncResult)
Dim clientdata As String = Encoding.ASCII.GetString(bytes)
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(clientdata)
Stream.Write(sendBytes, 0, sendBytes.Length)
End Sub
Private Sub CON_AN()
If TCP_Client.Connected = True Then
TXT_VERBINDUNG.Text = "Verbunden mit " + TXT_CLIENT.Text
TXT_VERBINDUNG.Refresh()
Else
TXT_VERBINDUNG.Text = "Keine Verbindung"
TXT_VERBINDUNG.Refresh()
End If
End Sub
Private Sub BUT_TRENNEN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUT_TRENNEN.Click
'es wird nur gesendet wenn die verbindung steht
If TCP_Client.Connected = True Then
TCP_Client.Close()
End If
Call CON_AN()
End Sub
Private Sub BUT_SENDEN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUT_SENDEN.Click
BUT_SENDEN.Enabled = False
'falls die verbindung nicht steht wird verbunden
If TCP_Client.Connected = False Then
'On Error Resume Next
TCP_Client.Connect(TXT_CLIENT.Text, xxxxx)
'On Error Resume Next
Stream = TCP_Client.GetStream
End If
'anzeigen ob eine Verbindung steht
Call CON_AN()
'es wird nur gesendet wenn die verbindung steht
If TCP_Client.Connected = True Then
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(TextBox1.Text)
Stream.Write(sendBytes, 0, sendBytes.Length)
Else
'ausgabe dass keine verbindung steht
MsgBox("-> Es steht keine Verbindung mit - " + TXT_CLIENT.Text + " <-")
End If
BUT_SENDEN.Enabled = True
End Sub
End Class
ich habe mir ein kleines Tool unter VB.Net 2008 geschrieben mit dem man Nachrichten an einen anderen schicken kann.
Mein kleines Problem liegt darin, dass ich die Verbindung nicht schließen kann.
Wenn ich die Verbindung trenne und will sie wieder verbinden kommt der Fehler "Auf das verworfene Objekt kann nicht zugegriffen werden. Objektname: System.Net.Sockets.TcpClient."
Wie ich richtig die Verbindung trenne.
Kann mir einer Helfen.
Imports System.Net.Sockets
Imports System.Text
Imports System.Runtime.Remoting.Messaging
Public Class Form1
Private TCP_Client As New TcpClient
Dim bytes() As Byte
Private Stream As NetworkStream
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
'es wird nur gesendet wenn die verbindung steht
If TCP_Client.Connected = True Then
TCP_Client.Close()
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Show()
Me.Activate()
Me.Refresh()
End Sub
Private Sub onGetData(ByVal ar As System.IAsyncResult)
Dim clientdata As String = Encoding.ASCII.GetString(bytes)
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(clientdata)
Stream.Write(sendBytes, 0, sendBytes.Length)
End Sub
Private Sub CON_AN()
If TCP_Client.Connected = True Then
TXT_VERBINDUNG.Text = "Verbunden mit " + TXT_CLIENT.Text
TXT_VERBINDUNG.Refresh()
Else
TXT_VERBINDUNG.Text = "Keine Verbindung"
TXT_VERBINDUNG.Refresh()
End If
End Sub
Private Sub BUT_TRENNEN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUT_TRENNEN.Click
'es wird nur gesendet wenn die verbindung steht
If TCP_Client.Connected = True Then
TCP_Client.Close()
End If
Call CON_AN()
End Sub
Private Sub BUT_SENDEN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUT_SENDEN.Click
BUT_SENDEN.Enabled = False
'falls die verbindung nicht steht wird verbunden
If TCP_Client.Connected = False Then
'On Error Resume Next
TCP_Client.Connect(TXT_CLIENT.Text, xxxxx)
'On Error Resume Next
Stream = TCP_Client.GetStream
End If
'anzeigen ob eine Verbindung steht
Call CON_AN()
'es wird nur gesendet wenn die verbindung steht
If TCP_Client.Connected = True Then
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(TextBox1.Text)
Stream.Write(sendBytes, 0, sendBytes.Length)
Else
'ausgabe dass keine verbindung steht
MsgBox("-> Es steht keine Verbindung mit - " + TXT_CLIENT.Text + " <-")
End If
BUT_SENDEN.Enabled = True
End Sub
End Class
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 98612
Url: https://administrator.de/forum/netzwerkclient-ueber-tcp-98612.html
Ausgedruckt am: 02.02.2025 um 23:02 Uhr