void client_MessageReceivedEvent(Secure_Stream client, Tcp_Message ms) { if (ReceiveEvent != null) { ReceiveEvent(ms); } }
void client_DisconnectEvent(Secure_Stream client) { ClientCount -= 1; if (DisconnectEvent != null) { DisconnectEvent(client); } client.Dispose(); }
private void _Secure_Tcp_Listener_NewClient(Secure_Stream client) { lock (_ClientLock) { _Clients.Add(client); } ClientCount += 1; if (NewClientEvent != null) { NewClientEvent(client); } client.MessageReceivedEvent += client_MessageReceivedEvent; client.DisconnectEvent += client_DisconnectEvent; client.BeginRead(); }
private void _BeginRead(Secure_Stream c) { try { var state = new MessageObject(); state.Client = c; c.Client.BeginReceive(state.HeaderBuffer, 0, MessageObject.HeaderSize, 0, new AsyncCallback(ReadHeaderCallback), state); } catch (Exception e) { if (DisconnectEvent != null) { DisconnectEvent(this); } Debug.WriteLine(e.Message); } }
private void _BeginRead(Secure_Stream c) { try { var state = new MessageObject(); state.Client = c; c.Client.BeginReceive(state.HeaderBuffer, 0, MessageObject.HeaderSize, 0, new AsyncCallback(ReadHeaderCallback), state); } catch(Exception e) { if(DisconnectEvent != null) DisconnectEvent(this); Debug.WriteLine(e.Message); } }
void _Server_NewClientEvent(Secure_Stream client) { if(!_Desktop_Service.Capturing) { _Desktop_Service.Capturing = true; Thread.Sleep(200);//make sure to sleep long enough for the background service to start up and get an image if needed. } var ms = new Tcp_Message((int)Desktop_Sharing_Shared.Message_Types.RESOLUTION_CHANGE); var tmp = _Desktop_Service._LastImage;//make sure to get a copy ms.Add_Block(BitConverter.GetBytes(tmp.Dimensions.Height)); ms.Add_Block(BitConverter.GetBytes(tmp.Dimensions.Width)); byte[] imgbytes; using(var msout = new MemoryStream()) { unsafe { fixed(byte* datb = tmp.Data) { using(Bitmap image = new Bitmap(tmp.Dimensions.Width, tmp.Dimensions.Height, tmp.Dimensions.Width * 4, PixelFormat.Format32bppRgb, new IntPtr(datb))) { image.Save(msout, ImageFormat.Png); imgbytes = msout.ToArray(); } } } } ms.Add_Block(imgbytes); client.Encrypt_And_Send(ms); }
void _Server_DisconnectEvent(Secure_Stream client) { if(_Server.ClientCount <= 0) _Desktop_Service.Capturing = false;//stop capturing since no clients are connected }