/// <summary> /// Runs in its own thread. Responsible for accepting new clients and kicking them off into their own thread /// </summary> private void ListenForClients() { listener.Start(); while (started) { try { if (!listener.Pending()) { Thread.Sleep(500); // choose a number (in milliseconds) that makes sense continue; // skip to next iteration of loop } TcpClient client = listener.AcceptTcpClient(); Thread clientThread = new Thread(new ParameterizedThreadStart(WorkWithClient)); Console.WriteLine("New client connected" + client.Client.AddressFamily.ToString()); NetworkBuffer newBuff = new NetworkBuffer(); newBuff.WriteBuffer = new byte[sendBufferSize]; newBuff.ReadBuffer = new byte[readBufferSize]; newBuff.CurrentWriteByteCount = 0; clientBuffers.GetOrAdd(client, newBuff); clients.Add(client); //clientThread.IsBackground = true; clientThread.Start(client); Thread.Sleep(15); } catch (SocketException sex) { Console.WriteLine(sex.Message); } } }
/// <summary> /// Constructs a new client /// </summary> public Client() { buffer = new NetworkBuffer(); buffer.WriteBuffer = new byte[writeBufferSize]; buffer.ReadBuffer = new byte[readBufferSize]; buffer.CurrentWriteByteCount = 0; }