// main function to send messages
        static void Main(string[] args)
        {
            Thread.Sleep(2000);
            Console.Write("\n  starting CommService client");
            Console.Write("\n =============================\n");
            Console.Title = "Client #1";
            Client clnt = new Client();

            clnt.processCommandLine(args);
            string   localPort = Util.urlPort(clnt.localUrl);
            string   localAddr = Util.urlAddress(clnt.localUrl);
            Receiver rcvr      = new Receiver(localPort, localAddr);

            if (rcvr.StartService())
            {
                Action newact = clnt.doAction(rcvr);
                rcvr.doService(newact);
            }
            Sender  sndr = new Sender(clnt.localUrl); // Sender needs localUrl for start message
            Message msg  = new Message();

            msg.fromUrl = clnt.localUrl;
            msg.toUrl   = clnt.remoteUrl;
            Console.Write("\n  sender's url is {0}", msg.fromUrl);
            Console.Write("\n  attempting to connect to {0}\n", msg.toUrl);
            if (!sndr.Connect(msg.toUrl))
            {
                Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
                sndr.shutdown();
                rcvr.shutDown();                return;
            }
            XDocument doc = XDocument.Load("./../../../dbload.xml");

            Console.WriteLine(doc.ToString());
            Console.WriteLine(" xml  is loaded ");
            Console.WriteLine();
            XElement dbe   = doc.Element("root");
            int      count = Int32.Parse(dbe.Element("count").Value);

            for (int i = 0; i < count; i++)
            {
                foreach (var a in dbe.Elements("ClientMessage"))
                {
                    msg         = new Message();
                    msg.fromUrl = clnt.localUrl;
                    msg.toUrl   = clnt.remoteUrl;
                    Console.Write("\n  sending {0}\n", msg.content);
                    Console.Write("\n");
                    msg.content = a.ToString();
                    sndr.sendMessage(msg);
                    Thread.Sleep(200);
                }
            }
            Thread.Sleep(200);   // Wait for user to press a key to quit.
            // Ensures that client has gotten all server replies.
            Util.waitForUser();  // shut down this client's Receiver and Sender by sending close messages
            rcvr.shutDown();            sndr.shutdown();            Console.Write("\n\n");
        }
 // main function to send messages
 static void Main(string[] args)         {
     Thread.Sleep(2000);
     Console.Write("\n  starting CommService client");
     Console.Write("\n =============================\n");
     Console.Title = "Client #1";
     Client clnt = new Client();
     clnt.processCommandLine(args);
     string localPort = Util.urlPort(clnt.localUrl);
     string localAddr = Util.urlAddress(clnt.localUrl);
     Receiver rcvr = new Receiver(localPort, localAddr);
     if (rcvr.StartService())            {
         Action newact = clnt.doAction(rcvr);
         rcvr.doService(newact);             }
     Sender sndr = new Sender(clnt.localUrl);  // Sender needs localUrl for start message
     Message msg = new Message();
     msg.fromUrl = clnt.localUrl;
     msg.toUrl = clnt.remoteUrl;
     Console.Write("\n  sender's url is {0}", msg.fromUrl);
     Console.Write("\n  attempting to connect to {0}\n", msg.toUrl);
     if (!sndr.Connect(msg.toUrl))             {
         Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
         sndr.shutdown();
         rcvr.shutDown();                return;            }
     XDocument doc = XDocument.Load("./../../../dbload.xml");
     Console.WriteLine(doc.ToString());
     Console.WriteLine(" xml  is loaded ");
     Console.WriteLine();
     XElement dbe = doc.Element("root");
     int count = Int32.Parse(dbe.Element("count").Value);
     for (int i = 0; i < count; i++)             {
         foreach (var a in dbe.Elements("ClientMessage"))                 {
             msg = new Message();
             msg.fromUrl = clnt.localUrl;
             msg.toUrl = clnt.remoteUrl;
             Console.Write("\n  sending {0}\n", msg.content);
             Console.Write("\n");
             msg.content = a.ToString();
             sndr.sendMessage(msg);
             Thread.Sleep(200);                 }             }
     Thread.Sleep(200);   // Wait for user to press a key to quit.
     // Ensures that client has gotten all server replies.
     Util.waitForUser();   // shut down this client's Receiver and Sender by sending close messages
     rcvr.shutDown();            sndr.shutdown();            Console.Write("\n\n");
 }    } }