public Message makeMessage(string fromUrl, string toUrl)
 {
   Message msg = new Message();
   msg.fromUrl = fromUrl;
   msg.toUrl = toUrl;
   msg.content = String.Format("\n  message #{0}", ++msgCount);
   return msg;
 }
        // main function 

    static void Main(string[] args)
    {
      "testing utilities".title('=');
      Console.WriteLine();

      "testing makeUrl".title();
      string localUrl = Utilities.makeUrl("localhost", "7070");
      string remoteUrl = Utilities.makeUrl("localhost", "7071");
      Console.Write("\n  localUrl  = {0}", localUrl);
      Console.Write("\n  remoteUrl = {0}", remoteUrl);
      Console.WriteLine();

      "testing url parsing".title();
      string port = urlPort(localUrl);
      string addr = urlAddress(localUrl);
      Console.Write("\n  local port = {0}", port);
      Console.Write("\n  local addr = {0}", addr);
      Console.WriteLine();

      "testing processCommandLine".title();
      localUrl = Utilities.processCommandLineForLocal(args, localUrl);
      remoteUrl = Utilities.processCommandLineForRemote(args, remoteUrl);
      Console.Write("\n  localUrl  = {0}", localUrl);
      Console.Write("\n  remoteUrl = {0}", remoteUrl);
      Console.WriteLine();

      "testing swapUrls(ref Message msg)".title();
      Message msg = new Message();
      msg.toUrl = "http://localhost:8080/CommService";
      msg.fromUrl = "http://localhost:8081/CommService";
      msg.content = "swapee";
      Utilities.showMessage(msg);
      Console.WriteLine();

      Utilities.swapUrls(ref msg);
      Utilities.showMessage(msg);
      Console.Write("\n\n");
    }
     // function to show message
 public static void showMessage(Message msg)
 {
   Console.Write("\n  msg.fromUrl: {0}", msg.fromUrl);
   Console.Write("\n  msg.toUrl:   {0}", msg.toUrl);
   Console.Write("\n  msg.content: {0}", msg.content);
 }
     //function to swap urls
 public static void swapUrls(ref Message msg)
 {
   string temp = msg.fromUrl;
   msg.fromUrl = msg.toUrl;
   msg.toUrl = temp;
 }
        // main function 
    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();      }    } }}