12得票8回答
TcpClient.GetStream().DataAvailable返回false,但流中仍有更多数据。

因此,似乎阻塞式Read()在接收所有发送给它的数据之前就返回了。因此我们使用一个由所涉及的流中的DataAvailable值控制的循环来包装Read()。问题在于,在这个while循环中,您可能会收到更多的数据,但是没有任何后台处理让系统知道这一点。我在网上找到的大多数解决方案都无法适用于我...

11得票4回答
什么原因会导致 NetworkStream.Read 被阻塞或挂起?

MSDN文档似乎表明NetworkStream.Read将总是立即返回。如果没有找到数据,则返回0。但是,我有一些代码当前正在运行,只有在某些情况下(我还没有弄清楚哪些情况),NetworkStream.Read似乎会挂起。以下是我从转储文件中收集到的堆栈跟踪: 00000000705ae...

10得票5回答
C# NetworkStream.Read 奇怪现象

有人能指出这段代码的缺陷吗?我正在使用TcpClient检索一些HTML。当与IIS服务器进行通信时,NetworkStream.Read()似乎永远无法完成。如果我改用Fiddler代理,则可以正常工作,但是在直接与目标服务器通信时,.read()循环将不会退出,直到连接异常中断并显示类似“...

10得票1回答
将Socket.ReceiveAsync替换为NetworkStream.ReadAsync(可等待的)

我有一个应用程序,同时建立了几百个TCP连接,并从它们接收持续的数据流。 private void startReceive() { SocketAsyncEventArgs e = new SocketAsyncEventArgs(); e.Compl...

10得票5回答
在哪里可以找到高分辨率的财务数据?

我正在编写一些股票机器学习软件,想找一些分笔数据或至少3到5分钟的数据。 我希望有一年或两年用于测试。 我不太关心数据来自哪个交易所,只要是从某个主要交易所得到的就可以。 还有没有什么地方可以连接到延迟的“实时”数据流? 数据不一定是免费的,但免费当然更好 :-)

10得票2回答
为什么 BufferedStream.Write 会抛出 "This stream does not support seek operations" 错误?

这个问题困扰着我。我在没有调用它的情况下收到有关“seek”的错误? 我的代码看起来像这样:// send 42 uint value = 42; byte[] msg = BitConverter.GetBytes(value); stream.Write(msg, 0, sizeof(u...

10得票5回答
获取NetworkStream中可用数据的长度

我希望能够在C#中获取TCP网络流中可用的数据长度,以设置缓冲区的大小,然后再从网络流中读取。有一个NetworkStream.Length属性,但尚未实现,而且我不想为缓冲区分配过大的空间,因为这会占用太多空间。我想到的唯一方法是在数据传输之前插入另一个数据告知其大小,但这似乎有些混乱。有什...

9得票4回答
为什么在C#中,“Flush”不能强制将字节传输到网络流中?

我有一个项目,我正在尝试将序列化的对象发送到服务器,然后等待“OK”或“ERROR”消息返回。 我似乎遇到了与此问题类似的问题:TcpClient发送/关闭问题 问题在于,我似乎唯一能够发送原始对象的方法是关闭连接,但是(当然)我无法等待服务器成功处理对象的结果。 private void ...

9得票3回答
C# - 如何关闭NetworkStream,调用stream.Close还是socket.Shutdown?

我想知道如何最好地处理使用Socket对象和NetworkStream对象的类?该类具有一个NetworkStream实例和一个Socket实例,用于创建NetworkStream。 this.socket = new Socket( A...

9得票2回答
C# - TcpClient - 如何检测数据流的结束?

我正在尝试将一台古老的网络摄像机与我的计算机连接,但我卡在了一个非常基本的问题上--检测流的结束。 我正在使用 TcpClient 与相机通信,并且我可以看到它传输命令数据,这里没有任何问题。 List<int> incoming = new List<i...