public void Listen()
        {
            try
            {
                //监听请求
                LogManger.WriteInfo("Server is listening");
                while (true)
                {
                    var clientSocket = this.serverSocket.Accept();
                    LogManger.WriteInfo("New connect:" + clientSocket.RemoteEndPoint.ToString());
                    Thread clientThread = new Thread(new ParameterizedThreadStart((object param) => {
                        bool sendMessage = true;
                        //创建用户操作服务器的实例
                        ServerManger serverManger = new ServerManger();
                        try
                        {
                            TcpMessage message = new TcpMessage();
                            var socket         = param as Socket;

                            //创建TCP消息上下文
                            message.NewMessage += (object e, NewMessageArgs args) =>
                            {
                                Thread.Sleep(20);
                                if (sendMessage == true)
                                {
                                    socket.Send(Encoding.UTF8.GetBytes("MSG:" + args.FormatString));
                                }
                            };
                            serverManger.MessageContext = message;
                            while (true)
                            {
                                byte[] buffer = new byte[256];
                                var length    = socket.Receive(buffer);
                                //断连
                                if (length == 0)
                                {
                                    return;
                                }
                                string data = Encoding.UTF8.GetString(buffer);
                                LogManger.WriteInfo(clientSocket.RemoteEndPoint.ToString() + ":" + data);
                                socket.Send(Encoding.UTF8.GetBytes(Parse(data, serverManger)));
                            }
                        }
                        catch (Exception ex)
                        {
                            //强制停止
                            serverManger.StopTest();
                            //关闭送信开关
                            sendMessage = false;
                            LogManger.WriteError("Listen error:" + ex.ToString());
                        }
                    }));
                    clientThread.Start(clientSocket);
                }
            }
            catch (Exception ex)
            {
                LogManger.WriteError("Listen error:" + ex.ToString());
            }
        }
Exemplo n.º 2
0
 public static bool ServerInit()
 {
     try
     {
         IsRunningTest     = false;
         IsRunningTestLock = new object();
         Tests             = new Dictionary <string, TestInstanceLoader>();
         LoadDlls();
         return(true);
     }
     catch (Exception ex)
     {
         LogManger.WriteError("Init Failed:" + ex.ToString());
         return(false);
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// 开始测试
 /// </summary>
 /// <param name="testName"></param>
 /// <returns></returns>
 public bool StartTest(string testName)
 {
     try
     {
         //判断是否存在正在运行中的测试
         lock (IsRunningTestLock)
         {
             if (!IsRunningTest)
             {
                 IsRunningTest = true;
             }
             else
             {
                 return(false);
             }
         }
         //寻找是否有测试用例
         if (!Tests.Keys.Contains(testName))
         {
             throw new Exception("Cannot find test named " + testName);
         }
         //加载
         var testInstance = Tests[testName].Load();
         ServerTestInstance = new ServerTestInstance(testInstance, testName, MessageContext);
         ServerTestInstance.CompleteEvent += (object e) =>
         {
             lock (IsRunningTestLock)
             {
                 IsRunningTest = false;
             }
             MessageContext.Info("测试已经结束");
             MessageContext.SendEvent("TestComplete", new string[] { });
         };
         Thread t = new Thread(new ThreadStart(ServerTestInstance.Run));
         t.Start();
         return(true);
     }
     catch (Exception ex)
     {
         lock (IsRunningTestLock)
         {
             IsRunningTest = false;
         }
         LogManger.WriteError("Start test failed:" + ex.ToString());
         return(false);
     }
 }
 public bool ServerInit()
 {
     try
     {
         //开启Tcp服务器
         LogManger.WriteInfo("Start Server,IP port 1919");
         serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         serverSocket.Bind(new IPEndPoint(IPAddress.Any, PORT));
         serverSocket.Listen(100);
         return(true);
     }
     catch (Exception ex)
     {
         LogManger.WriteError("Cannot start server:" + ex.ToString());
         return(false);
     }
 }