Hallo,
ich bräuchte etwas Hilfe..
Ich möchte einen TCP-Server programmieren der entweder das Empfangene Telegramm wieder an den Client zurücksendet oder mit einem Telegramm antwortet, dass über Eingabelemente definiert wird.
Ich habe mir etwas zusammengezimmert, das eine Clientanfrage annimmt und die gesendeten Daten liest.
Ich möchte allerdings nicht jedesmal die Verbindung neu aufbauen müssen, sondern der Server soll warten bis Daten
eintreffen, antworten und wieder warten. Hat jemand ne Idee wie ich das anstellen kann?
Weiterhin bräuchte ich noch ne Idee wie ich die Darstellung der empfangenen Bytes am besten mache. Ich würde gerne jedes Byte
einzeln hexadezimal darstellen. Es werden zwar nur ca. 64 Byte sein, aber 64 Textboxen sind ja auch ne Hausnummer..
Gibt es evtl. Elemente die dafür besser geeignet sind?
Viele Grüße
*Topic verschoben, Code-Tag eingefügt*
ich bräuchte etwas Hilfe..
Ich möchte einen TCP-Server programmieren der entweder das Empfangene Telegramm wieder an den Client zurücksendet oder mit einem Telegramm antwortet, dass über Eingabelemente definiert wird.
Ich habe mir etwas zusammengezimmert, das eine Clientanfrage annimmt und die gesendeten Daten liest.
VB.NET-Quellcode
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- tcpBg = New System.ComponentModel.BackgroundWorker
- 'Requires a routine that cancels background worker.
- tcpBg.WorkerSupportsCancellation = True
- 'ip is most likely from a Textbox.
- 'Dim adr As Net.IPAddress = Net.IPAddress.Parse("192.168.178.88")
- listener = New TcpListener(IPAddress.Any, 3333)
- tcpBg.RunWorkerAsync()
- End Sub
- Private Sub tcpBg_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles tcpBg.DoWork
- listener.Start()
- Dim myNetworkStream As NetworkStream
- SetTextBoxWithInvoke(TextBox1, "wait")
- ' TextBox1.Text = "wait"
- While tcpBg.CancellationPending = False
- client = listener.AcceptTcpClient
- myNetworkStream = client.GetStream()
- Dim myBufferBytes(1024) As Byte
- myNetworkStream.Read(myBufferBytes, 0, 1024)
- SetTextBoxWithInvoke(TextBox1, myBufferBytes(0))
- ' .Text = String.Format("{0:X2} {1:X2}", myBufferBytes(0), myBufferBytes(1))
- 'Do something with your client.
- client.Close()
- End While
- End Sub
- Private Delegate Sub SetTextBoxDelegate(ByVal TB As TextBox, ByVal txt As String)
- Private Sub SetTextBoxWithInvoke(ByVal TB As TextBox, ByVal txt As String)
- If TB.InvokeRequired Then
- TB.Invoke(New SetTextBoxDelegate(AddressOf SetTextBoxWithInvoke), New Object() {TB, txt})
- Else
- TB.Text = txt
- End If
- End Sub
Ich möchte allerdings nicht jedesmal die Verbindung neu aufbauen müssen, sondern der Server soll warten bis Daten
eintreffen, antworten und wieder warten. Hat jemand ne Idee wie ich das anstellen kann?
Weiterhin bräuchte ich noch ne Idee wie ich die Darstellung der empfangenen Bytes am besten mache. Ich würde gerne jedes Byte
einzeln hexadezimal darstellen. Es werden zwar nur ca. 64 Byte sein, aber 64 Textboxen sind ja auch ne Hausnummer..
Gibt es evtl. Elemente die dafür besser geeignet sind?
Viele Grüße
*Topic verschoben, Code-Tag eingefügt*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()