private void Listen(int i) { tcpClients[i] = tcpListener.AcceptTcpClient(); if (tcpClients[i].Connected) { tcpClients[i].NoDelay = true; networkStreams[i] = tcpClients[i].GetStream(); SendMessageRegisterPlayer(i, gameManager.RegisterPlayer()); if (PlayerConnected() == false) { byte[] message = Encoding.ASCII.GetBytes("server_full"); networkStreams[i].Write(message, 0, message.Length); networkStreams[i].Close(); tcpClients[i].Close(); backgroundThreads[i].Abort(); backgroundThreads[i].Start(); } while (true) { if (tcpClients[i].Connected == false) { break; } byte[] messageReadByte = new byte[tcpClients[i].ReceiveBufferSize]; int bytesRead = networkStreams[i].Read(messageReadByte, 0, tcpClients[i].ReceiveBufferSize); string messageRead = Encoding.ASCII.GetString(messageReadByte, 0, bytesRead); ParseMessage(messageRead); string[] data = messageRead.Split(';'); if (data[0] == "player_exit") { tcpClients[i].Client.Disconnect(true); break; } /* * foreach (NetworkStream networkStream in networkStreams) * networkStream?.Write(messageReadByte, 0, bytesRead); */ } networkStreams[i].Close(); networkStreams[i].Dispose(); networkStreams[i] = null; } tcpClients[i].Close(); tcpClients[i] = null; SendMessageResetGame(); ResetThread(i); }