jjzjj

DataAvailable

全部标签

c# - TcpClient.GetStream().DataAvailable 返回 false,但流有更多数据

因此,阻塞的Read()似乎可以在完成接收所有发送给它的数据之前返回。反过来,我们用一个循环包装Read(),该循环由相关流中的DataAvailable值控制。问题是您可以在此while循环中接收更多数据,但没有后台处理继续让系统知道这一点。我在网上找到的大多数解决方案都不适用于我。我最终做的是作为我循环的最后一步,我在从流中读取每个block后执行一个简单的Thread.Sleep(1)。这似乎让系统有时间更新,我没有得到准确的结果,但这似乎有点老套,而且对于解决方案来说有点“间接”。以下是我正在处理的情况的列表:IIS应用程序和独立应用程序之间的单个TCP连接,两者都是用C#编写

c# - NetworkStream.DataAvailable 更新缓慢

我正在编写一个基本的TCP/IP服务器来接收来自现有客户端的消息。目前,我能够接收单缓冲区和多缓冲区消息。当客户端发送一组多条消息时,问题就来了。它不是将每条消息作为单个通信发送,而是希望流打开并且集合中的所有消息在流再次关闭之前一个接一个地发送。我在下面的编辑代码段中对此进行了编码:privatevoidAcceptMessage(IAsyncResultar){StringreceivedMessage="";//Onlyruniftheserverislistening.Otherwise,anexceptionwillbethrown.if(isListening){ASCII

C# NetworkStream.DataAvailable 似乎不可靠

我有一个应用程序使用TCP套接字来交换字节数组,这些数组在大多数情况下包含JSON字符串数据。我遇到的是,对于较大的消息和不太理想的网络条件,使用NetworkStream.DataAvailable似乎不是检测消息结束的可靠方法。似乎在某些情况下DataAvailable被设置为false,即使只有部分消息已被对等方传输(使用TcpClient.GetStream().Write(data,0,data.Length)。这会导致不完整的数据被传回应用程序,在JSON消息的情况下,这意味着反序列化失败。我尝试了两种表现出相同问题的实现:实现1:byte[]Data;byte[]buff

vb.net - 当数据应该存在时不要从套接字获取任何数据,并且没有引发异常,连接已打开。使用 DataAvailable 等待数据

我在从RFID阅读器读取数据时遇到问题。我通过tcp连接到阅读器并等待DataAvailable为真,然后读取数据直到我得到数据字符结束。然后我就回去等待新的DataAvailable。这是在函数自己的线程中完成的。似乎有某种超时,如果我在几分钟内没有得到任何数据,那么它就在do/loop中等待DataAvailable。我将卡拿到RFID阅读器上,它发出哔哔声,但没有可用数据。我没有得到任何异常,并且信息说clientsocket仍然连接。还有什么我可以检查的吗?如果我每隔一分钟将卡片放入读卡器,这似乎永远不会发生。所以2-3分钟空闲:ing似乎可以做到这一点。这是我从套接字读取数据