TCP客户端中的ReadAsync()无法读取正确的数据

我有一个C#日志查看器应用程序,可以从服务器读取数据。 日志数据以“ hh:mm:ss:dddd”格式的时间开始。 如您所见,我已经附加了日志的起始字符串,并且消除了一些字节数据。这种消除是不一致的,我无法找到原因。 我的读取数据的代码如下:

private async Task ReadMessages()
        {
            Receiver = tcp.GetStream();
            if (Receiver.CanRead && tcp.Available > 0)
            {
                try
                {
                    byte[] byDataIn = new byte[tcp.Available];
                    int response = await Receiver.ReadAsync(byDataIn,byDataIn.Length);
                    muQueueIn.WaitOne();

                    //add the data to the queue
                    responseData = Encoding.ASCII.GetString(byDataIn);
                    int pos = responseData.IndexOf("\r\nGUI");
                    if (pos > 0 && byDataIn[0] != '\0')
                    {
                        string strSubstring1 = responseData.Substring(0,pos+2);
                        qqueueIn.Enqueue(strSubstring1);
                        Array.Clear(byDataIn,byDataIn.Length);
                    }

                    muQueueIn.ReleaseMutex();
                    Thread.Sleep(50);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
        }

我有一个单独的线程,该线程从队列中读取数据并显示在用户界面中


        public String GetDataFromServer()
        {
            muQueueIn.WaitOne();
            if (qqueueIn.Count > 0)
            {
                //muQueueIn.WaitOne();
                var str = qqueueIn.Dequeue();
                //muQueueIn.ReleaseMutex();
                return str.ToString();
            }
            muQueueIn.ReleaseMutex();
            return String.Empty;
        }

日志输出:

14:40:08.3820 //correct                
4:40:08.3840 //1 is not printed
:40:08.3940  //14 is not printed and so on     
4:40:08.4420  
14:40:08.4290          
0:08.4170 
40:08.4070 
:40:08.4560 
40:08.4660         
0:08.4790      
14:40:08.5070      
14:40:08.4930          
4:40:08.5160       
:40:08.5320  
40:08.5410         
:08.5610                   
0:08.5490  
dtj3516702 回答:TCP客户端中的ReadAsync()无法读取正确的数据

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3015051.html

大家都在问