Hi,
ich habe zwar schon einiges beim suchen gefunden, aber da war bisher nichts dabei, was wenigstens im Ansatz funktionierte. Daher hab ich einen Code etwas umgeschrieben und er funktioniert fast, nur dass ich nur ein Wort schicken kann und danach nichts mehr. vlt kann mir jmd helfen.
Danke
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.Text
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)
Sub New()
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Dim mythread As Thread = New Thread(New ThreadStart(AddressOf Me.getData))
mythread.IsBackground = True
mythread.Priority = ThreadPriority.BelowNormal
mythread.Start()
End Sub
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 start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles start.Click
Dim data As [Byte]() = Encoding.ASCII.GetBytes(send.text)
conn = New TcpClient("localhost", 1738)
nstrm = conn.GetStream
nstrm.Write(data, 0, data.Length)
End Sub
End Class
ich habe zwar schon einiges beim suchen gefunden, aber da war bisher nichts dabei, was wenigstens im Ansatz funktionierte. Daher hab ich einen Code etwas umgeschrieben und er funktioniert fast, nur dass ich nur ein Wort schicken kann und danach nichts mehr. vlt kann mir jmd helfen.
Danke
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.Text
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)
Sub New()
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Dim mythread As Thread = New Thread(New ThreadStart(AddressOf Me.getData))
mythread.IsBackground = True
mythread.Priority = ThreadPriority.BelowNormal
mythread.Start()
End Sub
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 start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles start.Click
Dim data As [Byte]() = Encoding.ASCII.GetBytes(send.text)
conn = New TcpClient("localhost", 1738)
nstrm = conn.GetStream
nstrm.Write(data, 0, data.Length)
End Sub
End Class
Comment