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(); } }