public void callback_getSetting(DataTranfer d) { _log("callback_getSetting: " + d.ToJson()); if (Clients?.Any() == true) { foreach (var item in Clients) { item.Value.Writer.WriteLine(d.data + ""); item.Value.Writer.Flush(); } } }
public void TryCallServer(string method, DataTranfer data) { try { if (tryEnsureConnected()) { _proxy_homeHub.Invoke <DataTranfer>(method, data); } } catch (Exception ex) { _log(ex); ex.LogToDebugAndFile(); } }
private async void _tryListenServerTCP() { try { TCPSErver_ON = false; _tcpListener?.Stop(); await Task.Delay(2000); _tcpListener = new TcpListener(IPAddress.Any, tcpServerPort); _tcpListener.Start(); _log($"SERVER STARTED IN {_tcpListener.LocalEndpoint}"); TCPSErver_ON = true; var t = Task.Run(() => { while (TCPSErver_ON) { try { var client = _tcpListener.AcceptTcpClient(); var stream = client.GetStream(); var ci = new ClientInfo { Client = client, Reader = new StreamReader(stream), Writer = new StreamWriter(stream) { AutoFlush = true }, }; if (Clients.ContainsKey(client.Client.RemoteEndPoint)) { Clients[client.Client.RemoteEndPoint] = ci; } else { Clients.Add(client.Client.RemoteEndPoint, ci); } _log($"{client.Client.RemoteEndPoint} CONNECTED. Client{Clients.Count}"); Task.Run(() => { while (client.Connected) { try { var line = ci.Reader.ReadLine(); _log(line); try { var now = DateTime.Now; receiveData(DataTranfer.From($"{now}>>{client.Client.RemoteEndPoint}>>\"{line}\"")); if (line.StartsWith("{\"CBDS18B20\"")) { var data = JsonConvert.DeserializeObject <ThongSoSetting>(line); data.Time = now; rep_getSetting(DataTranfer.From(data)); } else if (line == "OK") { rep_caiDatThongSo(DataTranfer.From(line)); } else { var data = JsonConvert.DeserializeObject <ThongSoTB>(line); data.Time = now; capNhatThongSo(DataTranfer.From(new[] { data })); } ci.Writer.Write("ok"); } catch (Exception e2) { ci.Writer.Write("json ko hop le. " + e2.Message); } } catch (Exception ex) { _log(ex.Message); break; } } _log($"{client.Client.RemoteEndPoint} disconnected"); if (Clients.ContainsKey(client.Client.RemoteEndPoint)) { var ep = client.Client.RemoteEndPoint; Clients[ep]?.Client?.Dispose(); Clients.Remove(ep); } }); } catch (Exception ex) { _log(ex); } } }); label_tcpServer.Text = $"{_tcpListener?.LocalEndpoint}"; pictureBox_tcp.Image = Properties.Resources.dot_green_50; } catch (Exception ex) { ex.LogToDebugAndFile(); TCPSErver_ON = false; label_tcpServer.Text = $"*:{tcpServerPort}"; pictureBox_tcp.Image = Properties.Resources.dot_red_50; await Task.Delay(5000); _tryListenServerTCP(); } }
public void rep_getSetting(DataTranfer d) { TryCallServer("rep_getSetting", d); }
public void rep_caiDatThongSo(DataTranfer d) { TryCallServer("rep_caiDatThongSo", d); }
public void receiveData(DataTranfer d) { TryCallServer("receiveData", d); }
public void join(DataTranfer d) { TryCallServer("join", d); }
public void getSetting(DataTranfer d) { throw new NotImplementedException(); }
public void capNhatThongSo(DataTranfer d) { TryCallServer("capNhatThongSo", d); }
public void callback_rep_getSetting(DataTranfer d) { throw new NotImplementedException(); }
public void callback_rep_caiDatThongSo(DataTranfer d) { throw new NotImplementedException(); }
public void callback_receiveData(DataTranfer d) { throw new NotImplementedException(); }
public void callback_join(DataTranfer d) { _log("success callback_join"); }