DateClient

   class DateClient
    {
        //the needed member feilds
        private TcpClient tcpc;
        private string name;
        private int port = 4554;
        private bool readData = false;

        public DateClient(string name)
        {
        //a label
        tryagain:

            this.name = name;
            try
            {
                //connect to the "localhost" at the give port
                //if you have some other servername then you can use that instead of "localhost"
                tcpc = new TcpClient("localhost", port);
                //get a Network stream from the server
                NetworkStream nts = tcpc.GetStream();
                //if the stream is writiable then write to the server
                if (nts.CanWrite)
                {
                    string sender = "Hi Server , I am " + name;
                    Byte[] sends = System.Text.Encoding.ASCII.GetBytes(sender.ToCharArray());
                    nts.Write(sends, 0, sends.Length);
                    //flush to stream
                    nts.Flush();
                }
                //make a loop to wait untill some data is read from the stream
                while (!readData && nts.CanRead)
                {
                    //if data available then read from the stream
                    if (nts.DataAvailable)
                    {
                        byte[] rcd = new byte[128];
                        int i = nts.Read(rcd, 0, 128);

                        string ree = System.Text.Encoding.ASCII.GetString(rcd);
                        char[] unwanted = { ' ', ' ', ' ' };

                        Console.WriteLine(ree.TrimEnd(unwanted));
                        readData = true;
                    }
                }

            }
            catch (Exception e)
            {
                Console.WriteLine("Could not Connect to server because " + e.ToString());
                //Here an exception can be cause if the client is started before starting the server.
                //A good technique is used to handle such exceptions and give the client
                //a chance to re-try to connect to the server
                Console.Write("Do you want to try Again? [y/n]: ");
                char check = Console.ReadLine().ToCharArray()[0];
                if (check == 'y' || check == 'Y')
                    goto tryagain;
            }

        }

        public static void Main11(string[] argv)
        {
            //check to see if the client has entered his name
            //if not ask him if he wants to enter his name.
            if (argv.Length <= 0)
            {
                Console.WriteLine("Usage: DataClient <yourname>");
                Console.Write("Would You like to enter your name now [y/n] ?");
                char check = Console.ReadLine().ToCharArray()[0];
                if (check == 'y' || check == 'Y')
                {
                    Console.Write("Please enter you name :");
                    string newname = Console.ReadLine();
                    DateClient dc = new DateClient(newname);
                    Console.WriteLine("Disconnected!!");
                    Console.ReadLine();

                }

            }
            else
            {
                DateClient dc = new DateClient(argv[0]);
                Console.WriteLine("Disconnected!!");
                Console.ReadLine();
            }
        }
    }

posted on 2011-11-15 22:23  breakpoint  阅读(144)  评论(0编辑  收藏  举报

导航