private void SessionInf(DataCover128kb data) { TerminalConnectData tcd = Protocol.BufferToObject <TerminalConnectData>(data.Data); SessionData sd = ClientsControl.GetSessions().FirstOrDefault(x => x.RemDevGuid.SequenceEqual(tcd.RemDevGuid) && x.TerminalGuid.SequenceEqual(tcd.TerminalGuid)); if (tcd.IsEnabled) { if (sd != null) { sd.UpdateInfoToClients(); } else { ClientsControl.AddSession(new SessionData(tcd.TerminalGuid, tcd.RemDevGuid)); } } else { if (sd != null) { ClientsControl.RemoveSession(sd); } } }
private void ShowPartners(object sender, EventArgs e) { if (usersControl == null) { usersControl = new ClientsControl(); } controller.NavigateToPage(usersControl); }
private void ShowClients(object sender, EventArgs e) { if (clientsControl == null) { clientsControl = new ClientsControl(); } controller.NavigateToPage(clientsControl); }
public void PingInfo() { long ping = Ping; byte[] data = new DataCover128kb(new СonnectionQuality(Id.Value, ping, ClientType.remote_device).Pack(), DataType.connectionQuality).Pack(); foreach (Terminal t in ClientsControl.GetTerminals()) { t.Write(data); } }
public void UpdateInfoToClients() { int idt = GetTerminalId(ClientsControl.GetTerminals()); int idr = GetRemoteDevId(ClientsControl.GetDevices()); byte[] data = new DataCover128kb(new SessionInfo(Id, idt, idr, SessionMessageType.SesInformation).Pack(), DataType.sessionInfo).Pack(); foreach (Terminal term in ClientsControl.GetTerminals()) { term.Write(data); } }
protected void MessageChat(DataCover128kb data) { MessageChat mc = Protocol.BufferToObject <MessageChat>(data.Data); string mess = $"[{DateTime.Now}]:id{Id.Value}:{Name}:{mc.TypeSender}\n{mc.Text}"; LogWriter.SendLog(mess); byte[] buf = data.Pack(); foreach (Terminal t in ClientsControl.GetTerminals()) { t.Write(buf); } }
public void Session(DataCover128kb data) { CreateSession si = Protocol.BufferToObject <CreateSession>(data.Data); RemoteDevice rd = ClientsControl.GetDevices().FirstOrDefault(x => x.Id.Value == si.RemDevId); if (rd != null) { string text = $"Запрос создания сессии id{Id.Value}:{Name} id{rd.Id.Value}:{rd.Name}"; LogWriter.SendLog(text); ClientsControl.SendGlobalChat(text); byte[] ip = new byte[4]; int port = si.CustomPort; string[] ipstrar = null; if (port > -1) { ipstrar = Program.GLOBALIP.Split('.'); } else { IPEndPoint ipep = (IPEndPoint)Client.RemoteEndPoint; ipstrar = ipep.Address.ToString().Split('.'); port = ipep.Port; } for (int i = 0; i < ip.Length; i += 1) { ip[i] = byte.Parse(ipstrar[i]); } byte[] pass = Guid.NewGuid().ToByteArray(); rd.Write(new DataCover128kb(new ConnectedInfo(ip, port, pass).Pack(), DataType.createSessionIpPort).Pack()); Write(new DataCover128kb(new ConnectedInfo(((IPEndPoint)rd.Client.RemoteEndPoint).Address.GetAddressBytes(), ((IPEndPoint)rd.Client.RemoteEndPoint).Port, pass).Pack(), DataType.createSessionIpPort).Pack()); } else { string text = $"В запросе создания сессии для {Id.Value}:{Name} отказано, удаленное устройство id:{si.RemDevId} не подключено"; LogWriter.SendLog(text); ClientsControl.SendGlobalChat(text); } }
protected void ClosingClient() { ClientsControl.RemoveTerminal(this); }
protected void ClosingClient() { ClientsControl.RemoveDevice(this); }