Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Console.Write("\n  starting Read Client for requirement #7");
            Console.Write("\n =============================\n");

            Console.Title = "ReadClient";

            ReadClient clnt = new ReadClient();
            clnt.processCommandLine(args);
            Console.Title = "ReadClient";

            string localPort = Util.urlPort(clnt.localUrl);
            string localAddr = Util.urlAddress(clnt.localUrl);
            Receiver rcvr = new Receiver(localPort, localAddr);
            if (rcvr.StartService())
            {
                rcvr.doService(rcvr.defaultServiceAction());
            }

            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;
            }

            XmlDocument doc = new XmlDocument();
            doc.Load("readClientTest.xml");
            XmlNodeList xmlnode = doc.GetElementsByTagName("Message");
            Stopwatch watch = new Stopwatch();

            watch.Start();//start watch
            while (true)//read and send messages
            {
                msg = new Message();
                msg.fromUrl = clnt.localUrl;
                msg.toUrl = clnt.remoteUrl;
                for (int i = 0; i < xmlnode.Count; i++)
                {
                    msg.content = "<?xml version=\"1.0\" encoding=\"utf - 8\" standalone=\"yes\"?>" + xmlnode[i].OuterXml;
                    Console.Write("\n  sending {0}\n", msg.content);
                    if (!sndr.sendMessage(msg))
                        return;
                    Thread.Sleep(100);
                }
                break;
            }
            msg.content = "done";
            sndr.sendMessage(msg);

            // Wait for user to press a key to quit.
            // Ensures that client has gotten all server replies.
            watch.Stop();
			string time = watch.ElapsedMilliseconds.ToString();
            Console.Write("Elapsed time: " + time + " millionsecondns\n\n");//print time elapsed
            Util.waitForUser();

            // shut down this client's Receiver and Sender by sending close messages
            rcvr.shutDown();
            sndr.shutdown();

            Console.Write("\n\n");
            
        }
        static void Main(string[] args)
        {
            WriteRequestParser re = new WriteRequestParser();

            Console.Write("\n  starting CommService client");
            Console.Write("\n =============================\n");

            Console.Title = "Write Client";

            WriteClient clnt = new WriteClient();

            clnt.processCommandLine(args);

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

            if (rcvr.StartService())
            {
                rcvr.doService(rcvr.defaultServiceAction());
            }

            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;
            }
            clnt.request = re.parse("writeRequest.xml");
            HiResTimer hrt   = new HiResTimer();
            ulong      total = 0;

            foreach (string i in clnt.request)
            {
                msg         = new Message();
                msg.fromUrl = clnt.localUrl;
                msg.toUrl   = clnt.remoteUrl;
                msg.content = i;
                if (clnt.verbose == 1)
                {
                    Console.Write("\n  Sending: {0}", msg.content);
                }
                hrt.Start();
                if (!sndr.sendMessage(msg))
                {
                    break;
                }
                hrt.Stop();
                total += hrt.ElapsedMicroseconds;
                Thread.Sleep(100);
            }
            //hrt.Stop();

            /*Use the following for testing the client
             *
             * int numMsgs = 5;
             * int counter = 0;
             * while (true)
             * {
             *      msg.content = "Hello";
             *      Console.Write("\n  sending {0}", msg.content);
             *      if (!sndr.sendMessage(msg))
             *              return;
             *      Thread.Sleep(100);
             ++counter;
             *      if (counter >= numMsgs)
             *              break;
             * }
             *
             */
            Console.Write("\n  Total time taken for sending all write messages {0} microseconds\n", total);
            msg         = new Message();
            msg.fromUrl = clnt.localUrl;
            msg.toUrl   = clnt.remoteUrl;
            msg.content = "done";
            sndr.sendMessage(msg);

            // 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
            try { rcvr.shutDown();
                  sndr.shutdown(); }
            catch { Console.Write("\n  Problem with closing sender and/or receiver\n"); }

            Console.Write("\n\n");
        }
        static void Main(string[] args)
        {
            Console.Title = "Simple Server";
            String.Format("Simple Server Started listing on {0}", port).title('=');

            SimpleSender sndr = new SimpleSender();
            Receiver     rcvr = new Receiver(port, address);

            rcvr.StartService();

            while (true)
            {
                Message msg = rcvr.getMessage();
                Console.Write("\n  Simple Server received:");
                Utilities.showMessage(msg);
                if (msg.content == "done")
                {
                    Console.WriteLine();
                    rcvr.shutDown();
                    sndr.shutdown();
                    break;
                }
                if (msg.content == "connection start message")
                {
                    continue;
                }
                msg.content = "Simple Server received: " + msg.content;
                Utilities.swapUrls(ref msg);
                if (sndr.goodStatus == true)
                {
#if (TEST_WPFCLIENT)
                    /////////////////////////////////////////////////
                    // The statements below support testing the
                    // WpfClient as it receives a stream of messages
                    // - for each message received the Server
                    //   sends back 1000 messages
                    //
                    int count = 0;
                    for (int i = 0; i < 1000; ++i)
                    {
                        Message testMsg = new Message();
                        testMsg.toUrl   = msg.toUrl;
                        testMsg.fromUrl = msg.fromUrl;
                        testMsg.content = String.Format("test message #{0}", ++count);
                        Console.Write("\n  sending testMsg: {0}", testMsg.content);
                        sndr.sendMessage(testMsg);
                    }
#else
                    /////////////////////////////////////////////////
                    // Use the statement below for normal operation
                    sndr.sendMessage(msg);
#endif
                }
                else
                {
                    Console.Write("\n  closing\n");
                    rcvr.shutDown();
                    sndr.shutdown();
                    break;
                }
                Console.WriteLine();
            }
        }