Exemplo n.º 1
0
        static void LauchServerType2()
        {
            /**
             * LauchServerType2跟LauchServerType1相比,其他不变,只是服务器会定时(1000毫秒)向客户端发送ServerPush帧
             */

            Task task_timer = new Task(TaskTimer, cts.Token);

            try
            {
                server = new MyServer("127.0.0.1", 2020);

                Console.WriteLine("Server UUID : " + server.GetUUID());
                Console.WriteLine("Server Status : " + server.GetStatus().ToString());

                server.Start();

                task_timer.Start();
            }
            catch (System.Exception ex)
            {
                server = null;
                Console.WriteLine("创建和启动服务器发生异常:" + ex.Message);
            }

            Console.WriteLine("如果要停止服务器,请输入quit,然后回车:");
            while (true)
            {
                string str = Console.ReadLine();
                if (str == "quit")
                {
                    if (server != null)
                    {
                        try
                        {
                            cts.Cancel();
                            task_timer.Wait();

                            server.Stop();
                            server = null;
                        }
                        catch (System.Exception ex)
                        {
                            server = null;
                            Console.WriteLine("停止服务器发生异常:" + ex.Message);
                        }
                    }
                    break;
                }
                else
                {
                    Console.WriteLine("如果要停止服务器,请输入quit,然后回车:");
                }
            }
        }
Exemplo n.º 2
0
        static void LauchServerType1()
        {
            /**
             * Command目录实现了4个帧类型值:Hello、Bye、Heartbeat和UploadFile
             * CmdHello : 服务器回应Hello字符串
             * CmdBye : 服务器回应Bye字符串,并且关闭Session
             * CmdHeartbeart : 服务器收到什么就回什么
             * CmdUploadFile : 上传文件,该帧是嵌套帧,即CmdUploadFile帧体包含2个TLV帧,第一个TLV帧是文件名,第二个TLV帧是文件的二进制数据
             */
            try
            {
                server = new MyServer("127.0.0.1", 2020);

                Console.WriteLine("Server UUID : " + server.GetUUID());
                Console.WriteLine("Server Status : " + server.GetStatus().ToString());

                server.Start();
            }
            catch (System.Exception ex)
            {
                server = null;
                Console.WriteLine("创建和启动服务器发生异常:" + ex.Message);
            }

            Console.WriteLine("如果要停止服务器,请输入quit,然后回车:");
            while (true)
            {
                string str = Console.ReadLine();
                if (str == "quit")
                {
                    if (server != null)
                    {
                        try
                        {
                            server.Stop();
                            server = null;
                        }
                        catch (System.Exception ex)
                        {
                            server = null;
                            Console.WriteLine("停止服务器发生异常:" + ex.Message);
                        }
                    }
                    break;
                }
                else
                {
                    Console.WriteLine("如果要停止服务器,请输入quit,然后回车:");
                }
            }
        }