Hallöchen,
ich bastel nun schon länger an einer kleinen Kommandozeilenanwendung, die via TCPListener Daten annimmt. Die bisherigen Varianten, die ich verwendet habe, waren nicht in der Lage, multiple Verbindungen anzunehmen.
Ich bin mir nicht sicher, ob es mehr Sinn macht, die Daten einfach nacheinander entgegenzunehmen und nach jedem Datenpaket einfach die Verbindung zu beenden, so dass der nächste Client connecten kann oder ob man es einfach per einem in diesem Forum bereits zitierten "Multiserver" machen sollte.
Ich habe (Quelle: yaldex.com/vb-net-tutorial/LiB0045.html) folgenden Code gefunden:
Am Ende der Seite wird die Information angefügt, dass man mittels folgendem Code den "Server" Multiverbindungsfähig machen könne:
Leider ist mir etwas unschlüssig, wie man in diesem Falle beides ineinander bringen könnte / sollte, denn ich bin in Sachen Threading leider noch etwas unbewandert. Ich versuche zwar, fit darin zu werden, aber dank grossem Zeitmangel kann ich mich - zumindest zur Zeit, nur sporadisch damit beschäftigen.
Ich würde mich freuen, wenn der ein oder andere mir einen Tip geben könnte, wie ich beide Codes miteinander verschmelzen lassen könnte.
Viele Grüße,
ein in der Hecke pennender Penner
ich bastel nun schon länger an einer kleinen Kommandozeilenanwendung, die via TCPListener Daten annimmt. Die bisherigen Varianten, die ich verwendet habe, waren nicht in der Lage, multiple Verbindungen anzunehmen.
Ich bin mir nicht sicher, ob es mehr Sinn macht, die Daten einfach nacheinander entgegenzunehmen und nach jedem Datenpaket einfach die Verbindung zu beenden, so dass der nächste Client connecten kann oder ob man es einfach per einem in diesem Forum bereits zitierten "Multiserver" machen sollte.
Ich habe (Quelle: yaldex.com/vb-net-tutorial/LiB0045.html) folgenden Code gefunden:
VB.NET-Quellcode
- Imports System.Net
- Imports System.Net.Sockets
- Imports System.IO
- Imports System.Threading
- Module TcpClientConsole
- Private Stream As NetworkStream
- Public Sub Main()
- Dim Client As New TcpClient()
- Try
- ' Try to connect to the server on port 11000.
- Client.Connect(IPAddress.Parse("127.0.0.1"), 11000)
- Console.WriteLine("* TCP Client *")
- Console.WriteLine("Connection established.")
- Console.WriteLine(New String("-", 40))
- Console.WriteLine()
- ' Retrieve the network stream.
- Stream = Client.GetStream()
- ' Create a new thread for receiving incoming messages.
- Dim ReceiveThread As New Thread(AddressOf ReceiveData)
- ReceiveThread.IsBackground =
- True ReceiveThread.Start()
- ' Create a BinaryWriter for writing to the stream.
- Dim w As New BinaryWriter(Stream)
- ' Loop until the word QUIT is entered.
- Dim Text As String
- Do
- Text = Console.ReadLine()
- ' Send the text to the remote client.
- If Text <> "QUIT" Then w.Write(Text)
- Loop Until Text = "QUIT"
- ' Close the connection socket.
- Client.Close()
- Catch Err As Exception
- Console.WriteLine(Err.ToString())
- End Try
- End Sub
- Private Sub ReceiveData()
- ' Create a BinaryReader for the stream.
- Dim r As New BinaryReader(Stream)
- Do
- ' Display any received text.
- Try
- If Stream.DataAvailable Then
- Console.WriteLine(("*** RECEIVED: " + r.ReadString()))
- End If
- Catch Err As Exception
- Console.WriteLine(Err.ToString())
- End Try
- Loop
- End Sub
- End Module
Am Ende der Seite wird die Information angefügt, dass man mittels folgendem Code den "Server" Multiverbindungsfähig machen könne:
VB.NET-Quellcode
- Dim Listener As New TcpListener(11000)
- Dim Client As TcpClient
- ' Initialize the port and start listening.
- Listener.Start()
- Do
- ' Wait for a connection request
- ' and return a TcpClient initialized for communication.
- Client = Listener.AcceptTcpClient()
- ' Create a new object to handle this connection.
- Dim Handler As New MyTcpClientHandler(Client)
- ' Start this object working on another thread.
- Dim HandlerThread As New Thread(AddressOf Handler.Process())
- HandlerThread.Start()
- Loop
- ' Close the underlying socket (stop listening for new requests).
- Listener.Stop()
Leider ist mir etwas unschlüssig, wie man in diesem Falle beides ineinander bringen könnte / sollte, denn ich bin in Sachen Threading leider noch etwas unbewandert. Ich versuche zwar, fit darin zu werden, aber dank grossem Zeitmangel kann ich mich - zumindest zur Zeit, nur sporadisch damit beschäftigen.
Ich würde mich freuen, wenn der ein oder andere mir einen Tip geben könnte, wie ich beide Codes miteinander verschmelzen lassen könnte.
Viele Grüße,
ein in der Hecke pennender Penner