private static void RecServerFromLB(NetworkStream networkStream)
        {
            byte[]         buffer = new byte[30];
            string         dataFromClient;
            IList <string> msgSplit;
            string         serverIp;
            int            port;

            try
            {
                while (true)
                {
                    networkStream.Read(buffer, 0, 30);
                    dataFromClient = Encoding.ASCII.GetString(buffer);
                    dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
                    msgSplit       = dataFromClient.Split(':');
                    serverIp       = msgSplit[0];
                    port           = Int32.Parse(msgSplit[1]) + 2;
                    log.Write("Starting Listening from Server " + serverIp + ":" + port);
                    TcpClient serverSocket = new TcpClient();
                    serverSocket.Connect(serverIp, port);
                    HandleServer server = new HandleServer {
                        ServerID = Interlocked.Increment(ref sereverounter), ServerSocket = serverSocket, Sender = true, Port = port, ServerIP = serverIp
                    };
                    server.StartServer();
                    serverList.Add(server.ServerID, server);
                }
            }
            catch (Exception ex)
            {
                log.Write("Exception in RecServerFromLB " + ex);
                Console.WriteLine("Exception in RecServerFromLB " + ex);
            }
        }
        private static void FetchServers(TcpListener serverSocket)
        {
            bool newServer;

            try
            {
                while (true)
                {
                    newServer = true;
                    TcpClient serverTCPSocket = default(TcpClient);
                    Console.WriteLine("Started Listening .....");
                    serverTCPSocket = serverSocket.AcceptTcpClient();


                    IList <string> msgSplit;
                    msgSplit = serverTCPSocket.Client.RemoteEndPoint.ToString().Split(':');
                    foreach (HandleServer handleserver in serverList.Values)
                    {
                        Console.WriteLine(msgSplit[0] + " = " + handleserver.ServerIP + " " + msgSplit[0].Equals(handleserver.ServerIP));
                        if (msgSplit[0].Equals(handleserver.ServerIP))
                        {
                            handleserver.Connected    = true;
                            handleserver.ServerSocket = serverTCPSocket;
                            handleserver.StartServer();
                            newServer = false;
                            log.Write("server " + handleserver.ServerIP + " has reconected ");
                            Console.WriteLine("server " + handleserver.ServerIP + " has reconected ");
                            //lock (disconnectedServerList)
                            //    disconnectedServerList.Remove(handleserver.ServerID);
                            //Console.WriteLine("Clearing List " + disconnectedServerList.Count + " deleted " + handleserver.ServerID + handleserver.Connected + handleserver.ServerSocket.Connected);
                        }
                    }
                    if (newServer)
                    {
                        HandleServer server = new HandleServer {
                            ServerID = Interlocked.Increment(ref sereverounter), ServerSocket = serverTCPSocket, Sender = false, ServerIP = msgSplit[0]
                        };
                        server.StartServer();
                        serverList.Add(server.ServerID, server);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Write("Exception in FetchServers " + ex);
                Console.WriteLine("Exception in FetchServers " + ex);
            }
        }