Ejemplo n.º 1
0
 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();
         }
     }
 }
Ejemplo n.º 2
0
 public void TryCallServer(string method, DataTranfer data)
 {
     try
     {
         if (tryEnsureConnected())
         {
             _proxy_homeHub.Invoke <DataTranfer>(method, data);
         }
     }
     catch (Exception ex)
     {
         _log(ex);
         ex.LogToDebugAndFile();
     }
 }
Ejemplo n.º 3
0
        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();
            }
        }
Ejemplo n.º 4
0
 public void rep_getSetting(DataTranfer d)
 {
     TryCallServer("rep_getSetting", d);
 }
Ejemplo n.º 5
0
 public void rep_caiDatThongSo(DataTranfer d)
 {
     TryCallServer("rep_caiDatThongSo", d);
 }
Ejemplo n.º 6
0
 public void receiveData(DataTranfer d)
 {
     TryCallServer("receiveData", d);
 }
Ejemplo n.º 7
0
 public void join(DataTranfer d)
 {
     TryCallServer("join", d);
 }
Ejemplo n.º 8
0
 public void getSetting(DataTranfer d)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 9
0
 public void capNhatThongSo(DataTranfer d)
 {
     TryCallServer("capNhatThongSo", d);
 }
Ejemplo n.º 10
0
 public void callback_rep_getSetting(DataTranfer d)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 11
0
 public void callback_rep_caiDatThongSo(DataTranfer d)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 12
0
 public void callback_receiveData(DataTranfer d)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 13
0
 public void callback_join(DataTranfer d)
 {
     _log("success callback_join");
 }