Beispiel #1
0
        private void _client_OnDataReceived(Sock.Server sender, object[] data)
        {
            var header  = (NetworkHeaders)data[0];
            var command = (NetworkCommands)data[1];

            if (header == NetworkHeaders.Image)
            {
                if (command == NetworkCommands.Request_Frame)
                {
                    var screenshot = ImageFunctions.TakeScreenshot((int)data[2]);
                    _client.Send(new object[] { (int)NetworkHeaders.Image, (int)NetworkCommands.Request_Frame, screenshot });
                }
                else if (command == NetworkCommands.Left_Click)
                {
                    var point = (Point)data[2];
                    Cursor.Position = point;

                    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
                    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                }
                else if (command == NetworkCommands.Right_Click)
                {
                    var point = (Point)data[2];
                    Cursor.Position = point;

                    mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
                    mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
                }
                else if (command == NetworkCommands.Request_Monitors)
                {
                    var monitorList = Screen.AllScreens.Select(s => s.DeviceName).ToArray();
                    _client.Send(new object[] { (int)NetworkHeaders.Image, (int)NetworkCommands.Request_Monitors, monitorList });
                }
            }
        }
Beispiel #2
0
        public void Connect(IPAddress ip, int port)
        {
            try
            {
                ClientSocket.Connect(new IPEndPoint(ip, 100));
            }
            catch (SocketException sockEx)
            {
                if (string.Equals(sockEx.Message, "No connection could be made because the target machine actively refused it"))
                {
                    if (OnConnect != null)
                    {
                        OnConnect(false);
                    }
                }
            }

            if (ClientSocket.Connected)
            {
                var sock = new Sock.Server(ClientSocket, DataBuffer.Length);
                sock.ServerSocket.BeginReceive(DataBuffer, 0, DataBuffer.Length, SocketFlags.None, new AsyncCallback(OnReceive), sock);
            }

            if (OnConnect != null)
            {
                OnConnect(ClientSocket.Connected);
            }
        }
Beispiel #3
0
        public void SetupConnection()
        {
            _server            = new Sock.Server();
            _server.BufferSize = 1048576;

            _server.OnDataReceived     += _server_OnDataReceived;
            _server.OnClientDisconnect += _server_OnClientDisconnect;

            _server.Start(100);
        }
Beispiel #4
0
        private void OnReceive(IAsyncResult ar)
        {
            Sock.Server sock = ar.AsyncState as Sock.Server;

            int receivedLength = 0;

            try
            {
                receivedLength = sock.ServerSocket.EndReceive(ar);
            }
            catch (Exception ex)
            {
                if (string.Equals(ex.Message, "Object reference not set to an instance of an object.") |
                    string.Equals(ex.Message, "An existing connection was forcibly closed by the remote host"))
                {
                    if (OnServerDisconnect != null)
                    {
                        OnServerDisconnect();
                    }
                }
            }

            if (receivedLength != 0)
            {
                if (UseEncryption)
                {
                    byte[] dataPacket = new byte[receivedLength];
                    Buffer.BlockCopy(DataBuffer, 0, dataPacket, 0, receivedLength);

                    byte[] decrypted = Decompress(EncryptionSettings.Decrypt(dataPacket, EncryptionKey));

                    if (OnDataReceived != null)
                    {
                        OnDataReceived(sock, DataFormatter.ConvertToObject(decrypted));
                    }

                    sock.ServerSocket.BeginReceive(DataBuffer, 0, DataBuffer.Length, SocketFlags.None, new AsyncCallback(OnReceive), sock);
                }
                else
                {
                    byte[] dataPacket = new byte[receivedLength];
                    Buffer.BlockCopy(DataBuffer, 0, dataPacket, 0, receivedLength);

                    if (OnDataReceived != null)
                    {
                        OnDataReceived(sock, DataFormatter.ConvertToObject(Decompress(dataPacket)));
                    }

                    sock.ServerSocket.BeginReceive(DataBuffer, 0, DataBuffer.Length, SocketFlags.None, new AsyncCallback(OnReceive), sock);
                }
            }
        }
        public RemoteDesktopFrm(ClientInfo info, Sock.Server server)
        {
            InitializeComponent();

            _server     = server;
            _clientInfo = info;
            Text       += info.User;

            _server.OnDataReceived     += _server_OnDataReceived;
            _server.OnClientDisconnect += _server_OnClientDisconnect;

            _clientInfo.ClientSocket.Send(new object[] { (int)NetworkHeaders.Image, (int)NetworkCommands.Request_Monitors });
        }