//Handling receiveing data;
        private void ServerReceive(ref List <TcpclientsWithMessage> tmp)
        {
            int                   i;
            NetworkStream         stream; //Creats a NetworkStream (used for sending and receiving data)
            int                   no             = tmp.Count - 1;
            TcpclientsWithMessage current_client = tmp[no];

            stream = tmp[no].cl.GetStream(); //Gets The Stream of The Connection
            Thread t = new Thread(() =>      // Thread (like Timer)
            {
                try
                {
                    byte[] datalength = new byte[3];                                        // creates a new byte with length 4 ( used for receivng data's length)
                    while ((i = current_client.cl.GetStream().Read(datalength, 0, 3)) != 0) //Keeps Trying to Receive the Size of the Message or Data
                    {
                        //Datalength data is at index 2, so go and fetch it!
                        byte[] data = new byte[Convert.ToInt32(datalength[2])];
                        for (int j = 0; j < 3; j++)
                        {
                            data[j] = datalength[j];
                        }

                        current_client.cl.GetStream().Read(data, 3, data.Length - 3); //Receives The Real Data not the Size

                        string message = "";
                        for (int j = 0; j < data.Length; j++)
                        {
                            if (j != data.Length - 1)
                            {
                                message = message + Convert.ToInt32(data[j]).ToString("X2") + " ";
                            }
                            else
                            {
                                message = message + Convert.ToInt32(data[j]).ToString("X2");
                            }
                        }

                        //Message output
                        current_client.setMessage(message);
                        DateTime localDate = DateTime.Now;
                        String timestamp   = localDate.ToString(new CultureInfo("en-US"));

                        fm1.Invoke((MethodInvoker) delegate // To Write the Received data
                        {
                            txtLog.AppendText(timestamp + " | Client : " + message + Environment.NewLine);
                        });

                        //-----
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            });

            t.IsBackground = true;
            t.Start(); // Start the Thread
        }
        public void StartConnect()
        {
            server.Start();             // Starts Listening to Any IPAddress trying to connect to the program with port 8080
            Console.WriteLine("Waiting For Connection....");
            Thread t = new Thread(() => // Creates a New Thread (like a timer)
            {
                while (true)
                {
                    TcpclientsWithMessage tmp = new TcpclientsWithMessage(server.AcceptTcpClient());

                    clients.Add(tmp);  //Waits for the Client To Connect

                    Console.WriteLine("Connected To Client");
                    if (clients[clients.Count - 1].cl.Connected) // If you are connected
                    {
                        ServerReceive(ref clients);              //Start Receiving
                        setupIDProcess(clients.Count - 1);
                    }
                }
            });

            t.IsBackground = true;
            t.Start();
        }