Beispiel #1
0
        private void dealCallExe(IWebSocketConnection socket, CallExeCo co)
        {
            // exe 调用服务
            CallExeServer exeServer = new CallExeServer();

            // 响应数据对象
            CallExeCro exeCro = new CallExeCro();

            exeCro.Uuid = co.Uuid;

            if (co.Async)
            {
                logReqMsg(socket, "exePath:" + co.ExePath + ", Args:" + string.Join(",", co.Args), co.Uuid);
                // CallExeOutputHandler outputHandler = new CallExeOutputHandler();
                // async
                exeServer.asyncCallExe(co.ExePath, co.Args,
                                       output =>
                {
                    Console.WriteLine("output:" + output);
                    // 每次只输出一行,因此需要动态添加"\n"
                    exeCro.Output += output + "\n";
                },
                                       exitCode =>
                {
                    Console.WriteLine("exitCode:" + exitCode);
                    exeCro.ExitCode = exitCode;

                    if (exeCro.Output != null && exeCro.Output.Length >= 1)
                    {
                        // 去除最后一个"\n"
                        exeCro.Output = exeCro.Output.Substring(0, exeCro.Output.Length - 1);
                    }

                    // logResMsg(socket, "exitCode:"+ exeCro.ExitCode + ", output:"+ exeCro.Output, co.Uuid);
                    // 异步调用结束
                    socket.Send(CommunicateUtils.communicateVoToStr(exeCro));
                },
                                       error =>
                {
                    Console.WriteLine("error:" + error);
                    exeCro.Error += error;
                });
            }
            else
            {
                // sync
                string[] ret = exeServer.syncCallExe(co.ExePath, co.Args);
                Console.WriteLine("exitCode:{0}, ouput:{1}, error:{2}", ret[0], ret[1], ret[2]);

                exeCro.ExitCode = int.Parse(ret[0]);
                exeCro.Output   = ret[1];
                exeCro.Error    = ret[2];

                socket.Send(CommunicateUtils.communicateVoToStr(exeCro));
            }
        }
Beispiel #2
0
        private void dealDownloadFile(IWebSocketConnection socket, DownloadFileCo co)
        {
            DownloadFileServer server = new DownloadFileServer();


            logReqMsg(socket, "URL:" + co.Url + ", savePath:" + co.SavePath, co.Uuid);

            server.downloadFile(co.Url, co.SavePath,
                                delegate(DownloadFileCro cro)
            {
                cro.Uuid = co.Uuid;

                logResMsg("isSuccess:" + cro.IsSuccess + ", savePath:" + cro.LocalPath + ", Message:" + cro.Message, co.Uuid);
                // 异步调用结束
                socket.Send(CommunicateUtils.communicateVoToStr(cro));
                server = null;
            });
        }
        /// <summary>
        /// 向Client Socket 发送数据
        /// </summary>
        /// <param name="socket"></param>
        /// <param name="co"></param>
        public void Send(Socket socket, CommunicateVO co)
        {
            string data = CommunicateUtils.communicateVoToStr(co);

            Send(socket, data);
        }