forsterm
Erfahrenes Mitglied
Hallo,
also ich hab folgenden Code:
Also der Code macht folgendes und zwar wenn die Anwendung gestartet wird, wird ein TCP-Port
- in dem Fall TCP-Port 1738 - überwacht und alle Daten (Text) der an den Port
gesendet wird, wird in eine Textbox geschrieben. Das Problem bei meinem Code ist
jetzt, dass wenn ich die Anwendung start sie "einfriert" und das solange, bist ich Daten
(Text) an den besagten Port sende.
Hoffe hier weiß jemand woran das liegen könnt.
mfg
forsterm
Ps: Eventuell gibt es ja eine viel einfacher/kürzere Lösung. Ich will eigentlich nur
erreichen, dass alle Daten die an einen bestimmten Port gesendet werden in eine
Textbox geschrieben werden.
also ich hab folgenden Code:
Code:
Imports System.Net
Imports System.Net.Sockets
Public Class Form1
Dim conn As TcpClient
Dim nstrm As System.IO.Stream
Dim sr As System.IO.StreamReader
Dim netBuff(1000 - 1) As Byte
Dim enc As New System.Text.UTF8Encoding
Dim dec As System.Text.Decoder Dim listener As New TcpListener(Net.IPAddress.Any, 1738)
Public Sub getData()
If IsNothing(conn) Then
listener.Start()
conn = listener.AcceptTcpClient
nstrm = conn.GetStream()
dec = enc.GetDecoder
nstrm.BeginRead(netBuff, 0, 1000, AddressOf cbr, Nothing)
Else
MsgBox("Server running")
End If
End Sub
Private Delegate Sub setTextHandler(ByVal data As String)
Public Sub cbr(ByVal ar As IAsyncResult)
Dim cnt As Integer
Dim data As String
Dim chars() As Char
Dim carryOn As Boolean = True
Try
cnt = conn.GetStream.EndRead(ar)
Debug.WriteLine("Server Bytes read: " + cnt.ToString())
If cnt = 0 Then
carryOn = False
Else
ReDim chars(dec.GetCharCount(netBuff, 0, cnt) - 1)
dec.GetChars(netBuff, 0, cnt, chars, 0)
data = New String(chars, 0, chars.Length)
Debug.WriteLine("Data received: " + data.Length.ToString() + " chars: " + data)
txtResponse.Invoke(CType(AddressOf setText, setTextHandler), New String() {data})
Debug.WriteLine("Restart read request")
nstrm.BeginRead(netBuff, 0, 1000, AddressOf cbr, Nothing)
End If
Catch ex As System.Exception
Debug.WriteLine("Error: " + ex.Message)
carryOn = False
End Try
If Not carryOn Then
nstrm.Close()
conn.Close()
listener.Stop()
nstrm = Nothing
conn = Nothing
End If
End Sub
Private Sub setText(ByVal data As String)
txtResponse.AppendText(data)
Application.DoEvents()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If IsNothing(conn) Then
getData()
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Start()
End Sub
End Class
- in dem Fall TCP-Port 1738 - überwacht und alle Daten (Text) der an den Port
gesendet wird, wird in eine Textbox geschrieben. Das Problem bei meinem Code ist
jetzt, dass wenn ich die Anwendung start sie "einfriert" und das solange, bist ich Daten
(Text) an den besagten Port sende.
Hoffe hier weiß jemand woran das liegen könnt.
mfg
forsterm
Ps: Eventuell gibt es ja eine viel einfacher/kürzere Lösung. Ich will eigentlich nur
erreichen, dass alle Daten die an einen bestimmten Port gesendet werden in eine
Textbox geschrieben werden.