private void _server_OnClientDisconnect(Sock.Client client)
        {
            if (client == _clientInfo.ClientSocket)
            {
                MessageBox.Show("The selected client has disconnected so you can no longer use this function!",
                                "ERROR : Client Disconnected", MessageBoxButtons.OK, MessageBoxIcon.Error);

                Invoke((MethodInvoker) delegate { Close(); });
            }
        }
Example #2
0
        private void _server_OnDataReceived(Sock.Client client, object[] data)
        {
            var header  = (NetworkHeaders)data[0];
            var command = (NetworkCommands)data[1];

            if (header == NetworkHeaders.Handshake &&
                command == NetworkCommands.Authenticate)
            {
                var info = new ClientInfo(client, data[2] as string, data[3] as string);
                Invoke((MethodInvoker) delegate { lvClients.Items.Add(info.ToListView()); });
            }
        }
Example #3
0
        private void OnReceive(IAsyncResult ar)
        {
            Sock.Client sock = ar.AsyncState as Sock.Client;

            int receivedLength = 0;

            try
            {
                receivedLength = sock.ClientSocket.EndReceive(ar);
            }
            catch (SocketException sockEx)
            {
                if (string.Equals(sockEx.Message, "An existing connection was forcibly closed by the remote host"))
                {
                    if (OnClientDisconnect != null)
                    {
                        OnClientDisconnect(sock);
                    }
                }
            }

            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.ClientSocket.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.ClientSocket.BeginReceive(DataBuffer, 0, DataBuffer.Length, SocketFlags.None, new AsyncCallback(OnReceive), sock);
                }
            }
        }
Example #4
0
        private void _server_OnClientDisconnect(Sock.Client client)
        {
            Invoke((MethodInvoker) delegate
            {
                foreach (ListViewItem lvi in lvClients.Items)
                {
                    var tag = (ClientInfo)lvi.Tag;

                    if (tag.ClientSocket == client)
                    {
                        lvClients.Items.Remove(lvi);
                    }
                }
            });
        }
Example #5
0
        private void OnAccept(IAsyncResult ar)
        {
            Socket sock = ServerSocket.EndAccept(ar);

            Sock.Client client = new Sock.Client(sock, DataBuffer.Length);
            client.EncryptionKey      = EncryptionKey;
            client.EncryptionSettings = EncryptionSettings;
            client.UseEncryption      = UseEncryption;

            if (OnClientAccepted != null)
            {
                OnClientAccepted(client);
            }

            client.ClientSocket.BeginReceive(DataBuffer, 0, DataBuffer.Length, SocketFlags.None, new AsyncCallback(OnReceive), client);

            ServerSocket.BeginAccept(new AsyncCallback(OnAccept), sock);
        }
Example #6
0
        private void btnConnect_Click(object sender, EventArgs e)
        {
            _client            = new Sock.Client();
            _client.BufferSize = 1048576;

            _client.OnConnect          += _client_OnConnect;
            _client.OnDataReceived     += _client_OnDataReceived;
            _client.OnServerDisconnect += _client_OnServerDisconnect;

            IPAddress address;

            if (!IPAddress.TryParse(txtIPAddress.Text, out address))
            {
                MessageBox.Show("The entered IP Address is invalid!", "ERROR : Invalid IP Address",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                _clientInfo = new ClientInfo(_client, Guid.NewGuid().ToString().ToUpper(), Environment.UserName);
                _client.Connect(address, 100);
            }
        }
        private void _server_OnDataReceived(Sock.Client client, object[] data)
        {
            var header  = (NetworkHeaders)data[0];
            var command = (NetworkCommands)data[1];

            if (header == NetworkHeaders.Image)
            {
                if (command == NetworkCommands.Request_Frame)
                {
                    Bitmap screenshot;

                    using (var ms = new MemoryStream(data[2] as byte[]))
                    {
                        screenshot = new Bitmap(ms);
                    }

                    _resolution = new Point(screenshot.Width, screenshot.Height);

                    Invoke((MethodInvoker) delegate { pbScreen.Image = screenshot; });
                    _FPS++;

                    if (_streaming)
                    {
                        Invoke((MethodInvoker) delegate
                        {
                            _clientInfo.ClientSocket.Send(new object[] { (int)NetworkHeaders.Image, (int)NetworkCommands.Request_Frame, toolStripComboBoxMonitors.SelectedIndex });
                        });
                    }
                }
                else if (command == NetworkCommands.Request_Monitors)
                {
                    Invoke((MethodInvoker) delegate
                    {
                        toolStripComboBoxMonitors.Items.AddRange(data[2] as string[]);
                    });
                }
            }
        }
Example #8
0
 public ClientInfo(Sock.Client client, string ID, string user)
 {
     ClientSocket = client;
     ClientID     = ID;
     User         = user;
 }