Zum Inhalt springen

Netzwerkclient mit VB.Net 2008


Empfohlene Beiträge

Geschrieben

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

Geschrieben

Hi, soweit ich es im Kopf habe ist Close schon der richtige Weg die Verbindung zu beenden, wenn du danach wieder eine Connection aufbauen willst musst du lediglich über new eine neue Klasse erstellen, die alte existiert nicht mehr. An der Stelle also TCP_Client = New TcpClient verwenden und die Verbindung wieder aufbauen. (oder direkt die ganze Zeit geöffnet lassen)

Das Verhalten ist übrigens in der Regel bei .NET immer so, nach einem Form.Close(); kann das Formular auch nicht mehr verwendet werden.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...