示例#1
0
        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();
        }
示例#2
0
        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);
        }