private void MessageLoop(object o) { TcpClient client = (TcpClient)o; var read = new StreamReader(client.GetStream(), SharedLibrary.Statics.Constants.USED_ENCODING); try { while (true) { if (client.Available <= 0) { Thread.Sleep(50); continue; } try { var message = JObject.Parse(read.ReadLine()); ReceivedMessageFromServer?.Invoke(currentServer, message); } catch (Exception e) { // ignored } } } catch (ThreadAbortException ex) { } client.Close(); }
private bool MessageReceived(byte[] data) { string receiveData = string.Empty; if (_key == null) { receiveData = Encoding.UTF8.GetString(data); } else { receiveData = Encoding.UTF8.GetString(ExtensionMethods.Decrypt(Convert.ToBase64String(data), _key)); } var message = JsonConvert.DeserializeObject <MessageModel>(receiveData); if (message == null) { return(true); } LocalInfo info; info.ipAddress = _client.LocalAddress; info.localEndPoint = Convert.ToInt32(_client.LocalPort); info.pcName = Environment.MachineName; if (message.Type == Type.AcceptLogon) { _isServerConnected = true; ConnectedServer?.Invoke(info); } if (message.Type == Type.Disconnect) { _client.Dispose(); _client = null; _flagOfThreadsBreak = true; _isServerConnected = false; DisconnectedServer?.Invoke("Connection disconnected by Server"); } if (message.Type == Type.Blocked) { _client.Dispose(); _client = null; _isServerConnected = false; DisconnectedServer?.Invoke("It does not connect to the server because it is a blocked IP."); } if (message.Type == Type.Message) { ReceivedMessageFromServer?.Invoke(message.Message); } return(true); }