Example #1
0
        public void Dispatch(Socket client)
        {
            var reader = new DataReciver(client);

            reader.OnComplete += Reader_OnComplete;
            reader.OnError    += Reader_OnError;
            reader.OnReset    += Reader_OnReset;
            reader.ReciveOneAsync();
        }
        private void Reader_OnComplete(DataReciver reader, byte[] buffer, int offset, int count)
        {
            var words = Encoding.UTF8.GetString(buffer, offset, count);

            words += temp;
            temp   = string.Empty;

            _logger.LogDebug($"revice from client: {words}");

            try
            {
                int  index      = 0;
                bool needRecive = false;

                while (true)
                {
                    var firstIndex = words.IndexOf("\n");
                    if (firstIndex < 0)
                    {
                        temp += words;
                        reader.ReciveOneAsync();
                        break;
                    }

                    var sub_words = words.Substring(index, firstIndex + 1);
                    var res       = handle(sub_words, reader.Socket);

                    if (res.NeedRecive)
                    {
                        needRecive = true;
                    }

                    words = words.Replace(sub_words, string.Empty);
                    if (string.IsNullOrEmpty(words))
                    {
                        break;
                    }
                }

                if (needRecive)
                {
                    reader.ReciveOneAsync();
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ToString());
                _logger.LogError($"handle fail msg:{words}");

                // throw;
                reader.Socket.Send(new Message <LogMassage>()
                {
                    MessageType = MessageType.Log, Content = new LogMassage(LogMsgType.Error, ex.Message)
                });
                reader.ReciveOneAsync();
            }
        }
        public ClientConnection(FastTunnelServer fastTunnelServer, Socket accept, ILogger logerr)
        {
            Socket            = accept;
            _logger           = logerr;
            _fastTunnelServer = fastTunnelServer;
            _loginHandler     = new LoginHandler(_logger);
            _heartHandler     = new HeartMessageHandler();
            _swapMsgHandler   = new SwapMessageHandler(_logger);


            reader = new DataReciver(Socket);
        }
 private void Reader_OnError(DataReciver send, SocketAsyncEventArgs e)
 {
     _logger.LogError("接收客户端数据异常 {0}", e.SocketError);
 }
 private void Reader_OnReset(DataReciver send, Socket socket, SocketAsyncEventArgs e)
 {
     //offLineAction(socket);
 }
 void Start()
 {
     menager   = GameObject.Find("GameMenager").GetComponent <GameMenager>();
     data      = GameObject.Find("Arduino").GetComponent <DataReciver>();
     rigidbody = GetComponent <Rigidbody>();
 }
Example #7
0
 void Start()
 {
     data = GameObject.Find("Arduino").GetComponent <DataReciver>();
 }