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(); }); } }
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()); }); } }
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); } } }
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); } } }); }
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); }
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[]); }); } } }
public ClientInfo(Sock.Client client, string ID, string user) { ClientSocket = client; ClientID = ID; User = user; }