Multithreading TcpListener
-
Hallo ich hab meine Probleme mit TcpListener und Multithreading.
Ich will ein Programm in C# schreiben das als Server arbeitet und mit dem TcpListener auf eingehende Verbindungen wartet, dabei soll man ja mehr als eine Verbindung auf ein Port machen können. Ich krieg aber immer eine Socket Fehlermeldung:"Ein Socketvorgang konnte nicht ausgeführt werden, da dem System Pufferspeicher fehlte oder eine Warteschlange voll war."
Hier ist der Code: So siehts ungefähr aus. Um zu sehen wie ich das mit dem Multithreading gemacht habe:
public class TcpServer { private Socket tcpRohr; private void start() { try { TcpListener listener = new TcpListener(IPAddress.Loopback, this.port); listener.Start(); while(true) { if(currentUser < maxUser) { // Accept blocks until a client connects TcpServer tcpServer = new TcpServer(port, maxUser); tcpServer.tcpRohr = listener.AcceptSocket(); socketAus = false; // Process the client connection on a new thread Thread threads = new Thread(new ThreadStart(tcpServer.datenVerkehr)); threads.Start(); currentUser += 1; } } } catch( SocketException socketEx ) { MessageBox.Show("Fehler Listener: "+socketEx.Message,"Socket Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
Also wie gesagt, funktioniert das nicht. Wie muss ich denn generell den TcpListener laufen lassen damit ich mehrere Verbindungen behandeln kann. Bekanntlich ist ja Multithreading die einzige Lösung um an einem Port mehrere eingehende Verbindungen zu bekommen.