示例#1
0
        /// <summary>
        /// 获取SYNC交互状态,错误时读取错误信息
        /// </summary>
        /// <param name="socket"></param>
        /// <param name="length"></param>
        /// <param name="success"></param>
        /// <param name="fail"></param>
        /// <returns></returns>
        public static AdbResult GetState(Socket socket, out int length, string success = "DATA", string fail = "FAIL")
        {
            var res = new AdbResult
            {
                // 读取状态代码
                State = Read(socket, 4, Encoding.ASCII)
            };

            length = -1;

            // 读取长度
            var bytes = new byte[4];
            var len   = Read(socket, bytes, 4);

            if (len != 4)
            {
                return(res);
            }
            var slen = BitConverter.ToInt32(bytes, 0);

            length = slen;

            // 判断响应状态是否为成功
            res.Okay = string.Equals(res.State, success);
            if (string.Equals(res.State, fail))
            {
                res.Data = Read(socket, slen, Encoding.UTF8);
            }
            return(res);
        }
示例#2
0
        /// <summary>
        /// 获取服务端响应结果
        /// </summary>
        /// <param name="socket"></param>
        /// <param name="iffial"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public static AdbResult GetResult(Socket socket, bool iffial = false, bool state = true)
        {
            var res = new AdbResult();

            // 读取状态
            if (state)
            {
                res.State = Read(socket, 4, Encoding.ASCII);
                res.Okay  = string.Equals(res.State, "OKAY");
                // 判断是否为错误时才读取消息
                if (iffial && res.Okay)
                {
                    return(res);
                }
            }
            // 读取消息长度,读取失败或长度为0时返回
            try
            {
                var bytes = Read(socket, 4, Encoding.ASCII);
                // 不读取状态字符串时,根据数据长度设置状态
                if (!state && bytes.Length == 4)
                {
                    res.Okay = true;
                }
                var len = Convert.ToInt32(bytes, 16);
                if (len <= 0)
                {
                    return(res);
                }
                // 根据长度读取消息
                res.Data = Read(socket, len, Encoding.ASCII);
            }
            catch (Exception)
            {
                // ignored
            }
            return(res);
        }