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 }); } } }
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); } }
public void SetupConnection() { _server = new Sock.Server(); _server.BufferSize = 1048576; _server.OnDataReceived += _server_OnDataReceived; _server.OnClientDisconnect += _server_OnClientDisconnect; _server.Start(100); }
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 }); }